CN102016864A - 在安全操作环境中为软件开发者管理代码权利 - Google Patents

在安全操作环境中为软件开发者管理代码权利 Download PDF

Info

Publication number
CN102016864A
CN102016864A CN2009801159898A CN200980115989A CN102016864A CN 102016864 A CN102016864 A CN 102016864A CN 2009801159898 A CN2009801159898 A CN 2009801159898A CN 200980115989 A CN200980115989 A CN 200980115989A CN 102016864 A CN102016864 A CN 102016864A
Authority
CN
China
Prior art keywords
developer
equipment
code
software
access profile
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
CN2009801159898A
Other languages
English (en)
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 CN102016864A publication Critical patent/CN102016864A/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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Abstract

公开了用于管理对安全操作环境中被限制的数据和系统资源的访问的系统和方法。开发者访问简档由可信任的权威机构颁发给开发者,所述开发者访问简档定义权利,所述权利提供对指定计算设备上的系统资源和数据的受限制的访问。开发者访问简档允许软件开发者对软件进行写操作,其访问目标平台环境中通常禁止第三方开发者入内的部分。

Description

在安全操作环境中为软件开发者管理代码权利
技术领域
本申请涉及开发环境中的安全。
背景技术
目前,计算机系统可能被配置为要求在计算机系统上执行的代码被可信赖方(诸如计算机系统的制造商)授权。这些类型的要求通常被执行以确保计算设备的完整性可以不被恶意的或未授权的代码所破坏。在一些情况下,计算机系统可以被配置为要求代码由可信赖方数字签署并在被允许在计算设备上执行之前被验证。数字签名的验证确保了基础的应用代码未被修改,因为它由可信任的权威机构(trustedauthority)数字签署过。
然而,这种安全方案对软件开发者提出了挑战。在开发期间,软件开发者将在计算机系统上频繁修改其代码并且可能试图在该系统上测试所述代码。每当代码被修改,数字签名将变为无效。因此,为了执行任何新的或修改后的代码,软件开发者必须使所述代码由可信任的权威机构再次签署。这种处理可能是麻烦并且耗时的。
之前,一些制造商发布了允许软件开发者数字签署其代码的开发证书。然而,简单地允许软件开发者签署其自有的代码不能解决设备上的其他安全问题。例如,可能期望基于开发者正在开发的软件、开发者与制造商的关系等而给予一些开发者对设备的不同特权和权利。传统的设备仅具有一般的或总体尺度的安全策略,其不能专用于特定设备或特定开发者。在一些情况下,这可能暴露各种安全缺陷或引入错误。
附图说明
图1是提供了适于将软件代码分配到计算设备的计算环境的示例的框图。
图2是提供了图1中的开发者计算设备可以如何被配置为利用开发者访问简档的一个示例的框图。
图3是图2中示出的开发者访问简档的更详细的图示。
图4是图3中示出的开发者标识符数据的更详细的图示。
图5是图3中示出的设备标识符数据的更详细的图示。
图6是图3中示出的权利数据的示例的更详细的图示。
图7是提供了计算设备可以如何被配置为验证和认证软件的说明的流程图。
图8是说明了第三方软件开发者可以被准予使用开发者访问简档进行开发者访问的一般处理的流程图。
图9是提供了开发者计算设备可以如何利用开发者访问简档来执行代码的可替换示例的流程图。
图10是提供了图6中的权利数据可以如何被请求、生成和传递给软件开发者的示例的流程图。
图11是提供了将权利应用到计算设备上的软件代码的示例的流程图。
图12是提供了如何使用权利来确定代码是否可以在设备上执行的示例的流程图。
图13是提供了策略服务可以如何被配置为减少在计算设备中的加密/解密操作的示例的流程图。
图14A说明了示例性的移动设备。
图14B说明了设备的可配置的顶层图形用户界面的另一个示例。
图15是移动设备的示例性实施方式的框图。
具体实施方式
这里公开了当开发者被准予对设备进行开发访问时,允许对授予该软件开发者的权利的细粒度控制的实施例。特别地,实施例提供了开发者访问简档,该开发者访问简档可以指定权利的策略或名单。这种开发者访问简档可以是特定于特定的开发者和特定的一组设备。因此,当软件开发者执行其代码时,即使软件开发者可能具有对设备的增强访问,却由开发者访问简档管理可以如何执行其代码。
为了说明本发明的实施例,现在将在以下呈现图1-13。图1可以是用于计算设备的软件可以如何在开发者计算设备上被开发并最终被分配的概述。图2-3说明了开发者计算设备和开发者访问简档的进一步的细节。图4-6说明了开发者访问简档的各个组件,其可包括开发者的一个或多个公开密钥、一个或多个设备标识符、以及已分配给开发者的一组权利。图7-9被提供以说明关于获得开发者访问简档以及开发者计算设备上的代码或应用可以如何基于开发者的简档和签名而被执行的各种处理流程。然后,图10-13被提供以说明如何生成、传递和实施权利数据。现在将参考图1。
图1可以是计算环境的一个示例,该计算环境允许授权的软件代码被分配到被配置为仅执行授权代码的计算设备。如图所示,计算环境可以包括一组计算设备100、可信任的权威机构102、以及软件开发者104。现在将进一步描述这些实体。
计算设备100可以是任意数量的不同类型的计算设备,包括台式计算机、膝上型计算机、手持计算机、个人数字助理(PDA)设备、移动电话设备、多媒体播放器设备等。例如,在一些实施例中,计算设备可以是来自AppleComputerInc的iPhoneTM、iPodTM或其他设备。计算设备100可以被配置为要求一些或全部代码由可信任的权威机构102授权。
例如,计算设备100的操作系统可以被配置为验证全部代码均已经由可信任的权威机构102授权。例如,操作系统,如MacOS、Windows、Linux、Unix和Symbian,可以被配置为基于代码或应用是否已经由授权实体签署而控制所述代码或应用的执行。如果代码被授权并验证,则其通常可以被执行而不需要任何进一步的系统或用户交互;如果代码未被授权,则其在计算设备100上执行的能力可被限制。在一些实施例中,计算设备可以警告用户该代码可能未被授权,并且询问用户是否仍希望执行该未授权的代码。在其他实施例中,计算设备100可以被配置为无论用户的偏好如何,均拒绝未授权代码的执行。
在一些实施例中,可信任的权威机构102可以是有权力确定软件(诸如软件106)是否可以在计算设备100上执行的任何实体。例如,可信任的权威机构102可以通过数字签署软件来表示其对该软件的授权。如本领域可以获知的,数字签名使用公开密钥密码术来帮助确保数据的完整性。数字签名可以用于标识数据的来源,并且可以进一步用于检测在应用数字签名之后数据的任何修改。
虽然图1示出了单个可信任的权威机构102,但本发明的实施例可以单独或组合地采用任意数量的可信任的权威机构。例如,若干可信任的权威机构中的每一个可以具有单方权力(unilateralauthority)以允许代码在计算设备100上执行。作为另一个示例,可以要求来自可信任的权威机构的组合的授权,诸如制造商和操作系统提供者两者的授权。
软件开发者104可以是对计算设备100上的应用和代码进行开发、分配、测试、安装等的任意实体。为了将其代码分配到计算设备100,软件开发者104可以向可信任的权威机构102提供编译的目标代码,该目标代码具有可以意图具有的形式以便分配到计算设备100。在部署来自开发者104的软件的过程中,可信任的权威机构102可以数字签署软件106的目标代码,并且然后能够利用代码的数字签名使该代码可用于计算设备100。随后,当在计算设备100上进行执行软件的请求时,计算设备100能够检验软件106的数字签名以验证其可靠性(authenticity)和/或授权。如果软件能够被验证为由可信任的权威机构102签署,则软件106被允许在计算设备100上执行。存在多种公知方式使计算设备100在执行软件前检查软件106的数字签名。
为了开发软件,软件开发者104可以与可信任的权威机构102协调以获得对一个或多个计算设备100的访问,该访问允许该软件开发者开发软件。因为软件开发者104可能希望在部署的计算设备100上测试其软件,所以软件开发者104可能获得或购买计算设备100。
然而,在软件开发处理期间,软件应用中的代码可能频繁地改变。为了缓解对可信任的权威机构102重复地数字签署代码的需求,可信任的权威机构102可以改为提供可以安装在计算设备100(D)上的数字证书和开发者访问简档。安装了所述数字证书和访问简档后,计算设备100(D)可以因此转换为开发者计算设备。
开发者访问简档可以允许软件开发者104在这些开发者计算设备100(D)上修改、重新编译和测试其软件而不需要从可信任的权威机构102请求额外的代码签署服务。特别地,开发者访问简档可以安装在开发者计算设备100(D)上,这将开发者计算设备100(D)配置为接受来自软件开发者104的数字签名并执行由软件开发者104签署的代码。在一些实施例中,除了接收开发者访问简档,开发者计算设备100(D)还可以包括与开发和测试相关的软件,诸如作为安装在计算设备100上的标准分配的一部分、作为预配置过程的一部分、或在任意其他时刻的调试、跟踪、或分析(profiling)软件。在一些实施例中,开发者计算设备100(D)被预配置为具有这种附加的与开发相关的软件。在其他实施例中,与开发相关的软件可以与开发者访问简档一起或结合开发者访问简档而安装在所述设备上。现在将在以下参考图2和图3描述这种开发者访问简档的一个实施例以及该开发者访问简档可如何在开发者计算设备100(D)上实施的进一步的细节。
图2示出了提供开发者计算设备100(D)可以如何被配置为利用开发者访问简档来执行由软件开发者104签署的软件的一个示例的框图。如上所述,开发者计算设备100(D)可以与由软件开发者104创建的软件106可能意图的计算设备100具有相同的设备类型。例如,如果软件106能够被开发为在特定移动电话平台上运行,则计算设备100和100(D)均可以在该相同的平台上工作,唯一的不同是开发者计算设备100(D)由软件开发者104利用(例如用于测试和质量保证目的),而其他计算设备100由终端用户使用。
开发者计算设备100(D)通常可以包括操作系统202。所述操作系统可以是公知的操作系统,例如MacOS、Windows、Linux、Unix、Symbian等。如以上简述的,操作系统202可以被配置为要求在设备100(D)上执行的一些或全部代码在允许该代码执行前被授权。在一些实施例中,可信任的权威机构102或软件开发者104可以利用代码签署证书,该代码签署证书可以用于验证签署的计算机代码的来源和完整性。
开发者计算设备100(D)还可以包括设备标识符204。设备标识符204可以采用各种形式。在一个实施例中,设备标识符可以是唯一标识开发者计算设备100(D)的序列号。在其他实施例中,设备标识符可以是由操作系统202生成的唯一标识符。
此外,开发者计算设备100(D)可以包括软件存储器206。该软件存储器206可以是在所述设备上可以存储软件106以供设备的操作系统202使用的位置。软件存储器206可以采用计算设备上的易失性和/或非易失性存储器的形式。软件106可以临时存储在设备100(D)中或永久存储在设备100(D)中。
在一些实施例中,在开发者计算设备100(D)上,数字签名可以通过对软件执行用于产生消息摘要(messagedigest)的散列函数而产生,该消息摘要之后可以使用软件开发者104或可信任的权威机构102的私用密钥签署。数字签名可以包括摘要,该摘要可以例如通过对软件执行用以产生消息摘要的散列函数而产生。在一些实施例中,可以使用增量代码签署。散列值可以是为软件的全部或特定部分生成的散列值。例如,在一些实施例中,软件被划分为一个或多个单元,例如一页或多页。为所述软件的每个单元或页生成散列值。在这种实施例中,用于软件的摘要包括为每个代码或页的散列值数组或表生成的散列值。消息摘要之后可以使用与可信任的权威机构102相关联的私用加密密钥加密。在一个实施例中,可以使用公知的SHA-1函数来生成消息摘要。加密的消息摘要(也称作签名)之后可以被添加到一个或多个软件模块206。因此,当执行软件代码时,开发者计算设备100(D)上的操作系统202可以通过确认数字签名是由可信任的权威机构102或软件开发者104使用可信任的权威机构102或软件开发者104的公开密钥签署的,来验证软件代码的来源和完整性,从而处理所述请求。
为了管理软件开发者104的开发者访问,开发者计算设备100(D)还可以具有开发者访问简档208。简档208可以由可信任的权威机构102创建,然后该简档可以被安装在开发者计算设备100(D)上。开发者访问简档208可以是允许执行由可信任的权威机构102以外的实体签署的软件的一组数据。特别地,开发者访问简档208可以允许软件开发者104修改和重新编译用于其软件106的源代码,并且然后在开发者计算设备100(D)上测试软件106而不需要从可信任的权威机构102请求额外的代码签署服务。取而代之地,软件开发者104可以被允许数字签署其软件106,并且在那些具有如下开发者访问简档208的开发者计算设备100(D)上运行软件,其中所述开发者访问简档208规定由开发者104签署的代码可以在设备100(D)上执行。在一些实施例中,开发者访问简档208还可以规定开发者104在测试软件106时可以执行的特定操作。例如,开发者访问简档208可以规定由开发者104数字签署的软件106可以在包括在开发者访问简档208中的开发者计算设备100(D)上调试。开发者计算设备100(D)可以安装有多于一个的开发者访问简档208。
在一些实施例中,开发者访问简档208可以结合策略处理210操作。策略处理210可以采用被操作系统202信任的守护进程(daemonprocess)的形式。可替换地,策略处理210可以是操作系统内核202的一部分。例如,访问简档208可以是具有由策略处理210读取的属性/值对(attribute/valuepair)的文件。
在一些实施例中,策略处理210可以连同开发者访问简档208一起安装在计算设备100上。可替换地,策略处理210可以在初始运输时与所述设备包括在一起。在其他实施方式中,策略处理210可以经由操作系统更新处理被添加到所述设备,所述操作系统更新处理可以是本领域公知的。
策略处理210通常可以用于实施在开发者访问简档208中规定的策略。在某些实施例中,策略处理210可以配置为检测代码执行请求并且确定所述请求是否应被允许。例如,当检测到执行代码的请求时,策略处理210可以配置为检查代码的数字签名以确保其有效。如果数字签名不是来自可信任的权威机构102,则策略处理210可以访问设备100(D)上的开发者访问简档208的开发者标识符数据302以确定所述签名是否可能来自在简档208中授权签署软件106的任何软件开发者104。
在一些实施例中,如果开发者访问简档208规定开发者可以在开发设备上跟踪软件的操作但不允许调试,则策略处理210将允许跟踪操作,但在调试模式中允许运行应用。
图3示出了开发者访问简档208的更详细图示。如上所述,开发者访问简档208可以是存储在设备100(D)上的一组数据。如图所示,开发者访问简档208可以包括设备标识符数据302、开发者标识符数据304和权利数据306等。现在将进一步描述这些内容。
设备标识符数据302规定开发者访问简档208所应用于的一个或多个设备标识符204。例如,在设备100是移动电话设备的实施例中,设备标识符数据302可以包括移动电话设备序列号的数组。开发者访问简档208可以进一步包括开发者标识符数据304,该开发者标识符数据304规定开发者访问简档208所应用于的软件开发者104。
开发者标识符数据304可以采用各种形式。在一些实施例中,开发者标识符数据304可以包括软件开发者104的姓名或标识符以及一个或多个与由开发者访问简档208覆盖的软件开发者104相关联的公开密钥。还可以使用其他类型的信息。
权利数据306可以包括表示被允许用于由开发者104签署的软件106的操作类型的数据。一般地,权利数据306可以是高度粒度化的,并且以高度的特征性(specificity)规定权利。以这种方式,可以为每个软件开发者104高度定制开发者访问简档208,并且如果需要,可以为每个设备100(D)高度定制。现在将描述图4-6以进一步说明关于开发者标识符数据304和权利数据306的细节。
图4示出了开发者标识符数据304的更详细的框图。如上所述,开发者访问简档208可以指定多于一个开发者104被授权以数字签署代码。在图4提供的示例中,指定了四个开发者标识符402(A)-402(D),其中四个不同的公开密钥存储在开发者标识符数据304中。在一些实施例中,开发者标识符数据304可以存储在数组数据结构中,该数组数据结构存储在开发者访问简档内。还可以使用其他类型的数据结构。
图5示出了设备标识符数据302的更详细的框图。用于开发者访问简档208的设备标识符数据302可以包括一个或多个设备标识符204。在图5提供的示例中,四个不同的设备标识符204(A)-204(D)(关于四个不同的开发者设备100(D))包括在简档208中。虽然提供的示例包括具体的设备标识符,但在一些实施例中,可以使用更通用的设备标识数据。例如,一些设备卖家和/或制造商可以提供具有特定于某个机构的设备标识符的设备。例如,设备卖家和/或制造商可以基于设备标识符204被传送到的机构而定制与设备相关联的设备标识符204的某些方面。在这些情况下,设备标识符数据302可以包括一定范围的设备标识符,而不是列出每个单独的设备标识符值。在其他实施例中,可以使用通配符来规定将开发者访问简档应用到具有指定标识符特性的所有设备。在其他实施例中,设备标识符数据可以规定将开发者访问简档208应用到所有设备。在这些情况下,由在开发者标识符数据302中标识的开发者中的一个或多个开发者签署的软件可以被授权以运行在可以安装有开发者访问简档208的任意设备100上。
图6提供了可以包括在权利数据306中的数据类型的示例的更详细的图示。如上所述,开发者访问简档208可以指定对于开发者104签署的应用,所允许的访问类型。在开发者计算设备100(D)上,可以要求将软件开发者104在开发者标识符数据304中列出并且可以将其限制于权利数据306中描述的权利。
权利数据306可以采用表示各种权利的预定义的布尔变量的形式。图6提供的示例示出了四种可能的权利602(A)-602(D)。
如果权利602(A)被设置为“TRUE”,则由开发者104签署的与开发者访问简档208相关联的代码被允许在调试模式中创建其软件106并且然后在调试模式中在设备100(D)上运行软件106。如果允许调试模式的权利602(A)未被设置为“TRUE”并且开发者104试图在调试模式中在设备100(D)上运行软件,则策略处理210可以被配置为不允许执行所述代码。
允许跟踪的权利602(B)允许由开发者104数字签署的软件106在跟踪模式中在由开发者访问简档208覆盖的设备100(D)上编译和执行。权利数据306可以进一步将权利指定到存储在设备100(D)上的文件系统中的特定数据,其中所述权利是关于由开发者104签署的软件106可以具有的访问的程度和/或类型。在一些实施例中,这些区域可以包括通常禁止应用访问的数据。例如,在移动电话设备中,通讯录数据可能包括第三方应用程序一般不可访问的敏感数据,对移动电话设备的网络连接的访问也可能被限制。然而,如果软件开发者104希望开发需要访问通讯录数据的应用,则访问通讯录数据权利602(C)可以被定义为允许这种访问。
权利数据306还可以规定关于对软件106可用的操作系统应用编程接口(API)的访问的程度和/或类型的权利。例如,软件开发者104可能希望通过调用操作系统中的多媒体API而对在计算设备100(D)上播放多媒体文件的软件应用进行写操作。设备100(D)上的操作系统202可以配置为不将多媒体API暴露给应用,除非由可信任的权威机构102签署。为了向软件开发者104提供在计算设备100(D)上测试软件106的能力,可能需要提供访问多媒体API的权利602(D),该权利将这个API暴露给软件106。
现在将参考图7-9解释用于在计算设备100上执行和开发代码的各种处理流程。首先,提供图7以说明计算设备100一般如何验证其执行的软件。之后提供图8以说明软件开发者如何在计算设备上获得开发者访问的处理。并且最终,图9说明了软件开发者可以如何利用其开发者访问在计算设备上开发和执行代码的一般处理。现在将描述这些附图。
如所述的,图7是一个流程图,说明计算设备100可以如何被一般地配置为在在设备100上执行软件106之前验证软件106。该处理开始于框702,在设备处可以接收到执行软件代码的请求。通常,这种请求可以在操作系统202中接收,并且所述请求包括由计算设备100上的处理器执行软件代码的请求。所述请求可以通过用户启动应用程序而生成,所述应用程序可以存储在计算设备的应用存储器206中。
所述处理然后移动到判定框704,在此计算设备确定代码是否已被数字签署。如果代码未被数字签署,则处理移动到框710,在此代码可以不被允许在设备100上执行。然而,如果代码可能被数字签署了,则处理移动到判定框706,在此系统认证并验证该数字签名。在一些实施例中,可以通过为数字签署的代码计算散列值(也被称作消息摘要),然后使用声称签署了该代码的可信任的权威机构102的公开密钥解密该代码的数字签名,来提供验证和认证。如果消息摘要的值和解密的数字签名匹配,则所述代码可以被验证和认证。如果在判定框706,所述代码未被认证和/或验证,则处理移动到框710并且可以不允许代码在设备100上执行。如果代码被认证和验证,则处理改为移动到框708,此处通常可以通过操作系统允许设备100执行所签署的代码。
图8可以一个流程图,说明根据本文所述的一个或多个实施例,第三方软件开发者(例如软件开发者104)被准予对开发者计算设备100(D)进行开发者访问的一般处理。所述处理可以开始于框802,此处软件开发者104识别出对计算设备100的开发访问的需要。如上所述,在某些实施例中,开发者104对意图在设备100上执行的软件106进行写操作。然而,设备100可以要求在所述设备上执行的一些或全部代码被数字签署。
在识别出对设备100的开发者访问的需要后,所述处理然后移动到框804,其中开发者104向可信任的权威机构102发送对于开发访问的请求。在一些实施例中,这种请求可以包括开发者104期望进行开发者访问的计算设备100(D)的标识符204。如上所述,设备标识符204可以采用设备序列号或者其他类型的可以特定于特定设备(或设备组)的标识数据的形式。此外,软件开发者104可以提供其他信息和数据,诸如开发人员的身份、地址、在其开发者访问中需要的访问类型等。
接下来,在框806,可信任的权威机构102基于由软件开发者104发送的设备标识符204生成开发者访问简档208。在各种实施例中,可信任的权威机构102可以在生成开发者访问简档208时实施一个或多个策略。这些策略可以基于若干因素而变化,所述因素例如可以包括:由软件开发者104开发的软件类型;与计算设备100有关的一个或多个其他方,诸如电信运营商或拥有计算设备100的企业;计算设备100(D)的地理位置;安装在计算设备100(D)上的硬件、软件或固件版本;等等。换句话说,开发者访问简档208可以高度特定于计算设备100(D)和软件开发者104。
在一些实施例中,可信任的权威机构102还可以为进行请求的软件开发者104生成开发者标识符。这种开发者标识符还可以用于由可信任的权威机构102发布的数字证书。在一些实施例中,可信任的权威机构102可以是证书权威机构或者可以使用另一实体作为证书权威机构。
数字证书可以包括关于软件开发者104以及软件开发者104的公开密钥的信息,所述信息可以使用可信任的权威机构102或证书权威机构的私用密钥签署。数字证书还可以包括其他信息和数据,诸如数字证书的有效时间段、一个或多个撤销权威机构等。
如上所述,生成的开发者访问简档208可以包括设备标识符数据302,该设备标识符数据302具有用于由开发者访问简档208覆盖的那些设备的设备标识符204的形式。开发者访问简档还可以包括开发者标识符数据304以及数字证书。开发者访问简档208还可以包括各种文件以及表示已授予所标识的特定设备上的软件开发者104的特定特权和权利的其他信息。一旦生成了开发者访问简档208,该开发者访问简档208然后就可以在框808处由可信任的权威机构102发送给软件开发者104。
例如,软件开发者104可以经由加密的通信(例如电子邮件或文件传送)、经由集成开发环境、或经由计算机可读介质(例如盘、闪存或光盘)的传递,通过访问网络上的服务器(例如因特网上的安全网站)来获得数字证书和开发者访问简档208。此外,软件开发者104可以一并获得数字证书和开发者访问简档,或者分别获得这两者。
在接收到开发者访问简档208后,软件开发者104然后可以在简档208指定的设备100(D)上存储和安装数字证书和开发者访问简档208。例如,软件开发者104可以采用集成开发者环境应用来在计算设备100(D)上安装这些项目。可替换地,可信任的权威机构102(或其他授权的实体)可以代表软件开发者104将这些项目安装到或推入到计算设备100(D)上。例如,软件开发者104可以将计算设备100(D)耦合或连接到网络或服务器。作为响应,在一些初步认证和其他处理后,数字证书和开发者访问简档208可以被下载到计算设备100(D)上。
图9可以是一个流程图,说明开发者计算设备100(D)如何根据开发者访问简档208处理执行数字签署的代码的一个示例。所述处理可以开始于框902,在此操作系统202接收到在开发者计算设备100(D)上执行代码的请求。通常,这种请求可以通过用户启动软件应用而生成。然而,这也可以是无需用户输入的自动启动的系统进程。操作系统202可以配置为首先检查所述代码是否由可信任的权威机构102签署,并且如果不是,则检查所述代码是否在开发访问中。
特别地,当操作系统202接收到了执行代码的请求时,它可以在判定框904处检查所述代码是否已被数字签署。如果所述代码未被数字签署,则所述处理可以跳到框910,并且可以不允许所述代码在设备100(D)上执行。
如果所述代码已被数字签署,则处理然后移动到判定框906,此处系统进行检查以确定软件代码是否已经由可信任的权威机构102或软件开发者104签署。
如上所述,在一些实施例中,可以通过使用与可信任的权威机构102或软件开发者104相关联的公开密钥将数字签名解密为消息摘要,然后针对通过散列所述代码自身而创建的消息摘要来确认上述消息摘要,从而认证和验证代码的数字签名。如果所述代码已经由可信任的权威机构102可验证地签署并且未被修改,则在一些情况下,所述处理移动到框916并且可以允许执行所述代码。
然而,如果在判定框906处,代码未由可信任的权威机构102签署,则处理可以移动到判定框908,在此处,系统然后进行检查以确定开发者访问简档208是否存在于设备100(D)上。如果设备100(D)上不存在开发者访问简档208,则处理移动到框910,并且可以阻止所请求的代码在设备100(D)上执行。
然而,如果开发者访问简档208存在于设备上,则所述处理然后移动到判定框912。在判定框912处,系统检查所述代码以确定其是否已经由设备100(D)上的开发者访问简档208中列出的软件开发者104签署。如果没有,则该执行处理移动到框910并且阻止所请求的代码的执行。
如果所述代码已经由具有至少一个开发者标识符402的软件开发者104数字签署,则所述处理可以继续到判定框914。在框914处,操作系统可以检查开发者访问简档208以确定所请求的代码执行是否与开发者访问简档208一致。例如,操作系统202可以检查设备标识符502是否在简档208的设备标识符数据302中列出。当然,可以执行可以关于所请求的代码执行(诸如调用的API)的其他检查,并且可以基于开发者访问简档208进行允许或阻止。
如果设备标识符204未在简档208中列出,则处理可以返回到框910并且可以阻止所述代码执行。然而,如果设备标识符204在开发者访问简档208中列出,则处理可以移动到框916,此处可以允许请求的代码的执行。
图10是说明开发者访问简档208中的权利数据602如何可以被请求、生成和传递的示例的流程图。注意,这个处理可以结合图8中描述的处理流程来执行,或者可以作为在图8的处理之外的单独处理来执行。例如,软件开发者104可以具有先前从可信任的权威机构接收到的对其他设备的开发访问,但是现在希望更新其访问简档208或获得用于相同或不同计算设备100(D)的新的权利602。
所述处理可以开始于框1002,此处软件开发者104识别出为了开发、测试和/或部署其软件106而对一个或多个设备100(D)的增强访问的需要。如上所述,这种需要可以在各种情况下出现。例如,开发者可能希望对利用通常不暴露给开发者104的系统资源的软件106进行写操作。这些系统资源可以包括通常仅可用于由可信任的权威机构签署的或者在所述设备的可信任的存储器空间中运行的应用的应用编程接口(API)。
这种类型的访问的一个示例是希望开发专用电话界面的针对移动电话设备的应用开发者。通常,电话的这些核心功能对于可信任的权威机构102之外的那些人或机构不可用。然而,由于各种原因,可信任的权威机构102可能希望允许软件开发者104为有限的一组设备100(D)开发这种应用。如上所述,开发者104需要的系统资源还可以包括对通常被操作系统202限制的特定数据的访问。这种类型的数据的示例包括(但不限于)通讯录数据、存储在设备中的电子邮件数据、呼叫日志数据等。此外,软件开发者104可能希望访问计算设备100(D)的其他资源,例如网络资源和某些存储器资源。
所述处理然后可以移动到框1004,此处软件开发者104可以发送对于访问特定设备100(D)中的系统数据和/或系统资源的请求。在一些实施例中,由软件开发者104发送的请求可以列出需要访问的具体系统资源和/或数据。可替换地,所述请求可以简单地指定由其软件106执行的操作的类型。基于由软件开发者104指定的操作的类型,可信任的权威机构102可以确定哪些权利602应该被包括在访问简档208中。
在各种实施例中,可信任的权威机构102在生成开发者访问简档208中的权利602时可以实施一个或多个策略。这些策略可以基于若干因素变化,所述因素例如可以包括:由软件开发者104开发的软件类型;与计算设备100有关的一个或多个其他方,诸如电信运营商或拥有计算设备100的企业;计算设备100(D)的地理位置;安装在计算设备100(D)上的硬件、软件或固件版本;等等。换句话说,开发者访问简档208可以高度特定于计算设备100(D)和软件开发者104。
接下来,所述处理可以移动到框1006,此处为软件开发者104生成开发者访问简档208以便包括权利602。访问简档208可以包括权利数据306,该权利数据306规定授予由软件开发者104签署的代码的权利602。如上所述,权利602可以是白名单权利,其规定肯定的(affirmative)权利,或者权利602可以是黑名单权利,其规定否定的(negative)权利。在其他实施例中,权利602可以是白名单和黑名单的结合。
一旦已经为软件开发者104生成了访问简档208,所述处理然后可以移动到框1008,此处可信任的权威机构102可以将访问简档208发送给软件开发者104。在一些实施例中,访问简档208可以经由网络连接(例如在因特网上)被传送,该网络连接可以是安全的网络连接。接收到访问简档208后,软件开发者104可以将该访问简档安装在设备100(D)上。例如,软件开发者104可以在耦合到设备100(D)的系统上执行诸如Xcode等集成开发环境,并且这种环境可以提供用于安装访问简档208的工具。
现在移到图11,提供了计算设备100(D)应用权利602的处理的示例。该处理开始于框1102,此处设备100(D)的操作系统202接收执行代码106的请求。接下来,在框1104,检查代码1104的数字签名,并且然后处理可以移动到判定框1106。
在判定框1106,确定签署的代码是否是由可信任的权威机构102签署的。如果签署的代码是由可信任的权威机构102签署的,则处理跳到框1112,此处操作系统202允许设备100(D)执行可信任的签署的代码。
如果在框1106未发现所述代码由可信任的权威机构签署,则处理可以移动到判定框1108,此处确定开发者访问简档208是否存在于设备100(D)上。在一些实施例中,策略处理210可以配置为执行这种功能。可替换地,操作系统202的其他部分可以进行该确定。
如果设备100(D)上不存在开发者访问简档208,则处理可以移动到框1114,此处阻止所述设备执行所请求的代码。然而,如果在设备100(D)上发现了开发者访问简档208,则处理然后可以移动到判定框1110,此处确定所述代码是否与开发者访问简档208中的权利602相适应。
这种确定可以涉及针对在开发者访问简档208的权利数据306中指定的权利602来检查代码。这种确定可以由策略处理210执行。以下参考图12提供如何检查代码的适应性的更详细的示例。
如果在框208发现代码与开发者访问简档相适应,则处理可以移动到框1112并且允许所述代码在设备上执行。然而,如果没有足够的权利存在于访问简档208中,则可以在设备100(D)上停止执行的代码。在一些实施例中,可以显示消息以通知用户,应用代码已经以某种方式被限制。在一些实施例中,可以向开发者或用户显示具体错误,这允许所述开发者或用户理解,为了具有全部功能,该应用所需要的访问类型。
如以上关于判定框1110所述,策略处理210可以配置为确定在设备100(D)上的开发者访问简档208中提供的权利602是否足以允许代码访问在所述代码执行后将调用的系统资源和/或数据。
图12是一个流程图,提供如何可以执行来自判定框1110的代码适应性确定的一个示例。所述处理可以开始于框1202,此处代码请求访问计算设备100(D)的受限制数据和/或系统资源。如上所述,受限制的数据和/或系统资源可能包括移动电话设备上的通讯录数据,或者其可能包括针对移动设备中的电话功能的API,或者其可能包括对设备中的网络栈的访问。
接下来,在框1204,策略处理210确定执行代码请求所必需的数据和/或系统资源的访问类型。然后所述处理可以移动到框1206,此处策略处理210从开发者访问简档208中的权利数据306中检索权利602。
一旦确定了需要的访问类型和可用的权利,则处理可以移动到判定框1208,此处策略服务210确定权利数据306是否允许对系统数据和/或系统资源的必要访问。通常,策略服务210可以检查权利602以确定执行所述代码需要的访问是否被包括在白名单中。
如果所述访问未在白名单中指定,则所述处理可以移动到框1212,并且不允许所述代码访问所请求的数据和/或系统资源。然而,如果权利数据306包括允许所请求的访问的权利602,则所述处理改为可以移动到框1210,此处所述代码被允许访问所请求的数据和/或系统资源。
在以上关于图11和图12所述的处理中,假设单个开发者访问简档208存在于设备100(D)上。然而,如前所述,应该理解,单个设备100(D)可以存储任意数量的访问简档208,这些访问简档208定义了不同的开发者标识符数据302、设备标识符数据304和权利数据306。当软件代码106请求对系统数据和/或资源的访问时,有可能的是,许多访问简档208中的任意一个可以提供用于在设备100(D)上允许代码执行的必要权利。如前所述,策略处理210可以访问开发者访问简档208以验证签署的代码的来源和完整性。这种验证可以通过针对存储在访问简档208中的公开密钥来检查数字签名而完成。
在包括多个不同简档的设备上,针对签署的代码要检查许多有可能的公开密钥,这种验证处理可能变得在计算上昂贵。因此,在一些实施例中,策略处理210可以配置为首先分析正确运行代码所需要的权利602,然后在确认签署的代码之前排除那些不具有必要的权利的访问简档。这可以得到很大的性能益处而不损害设备的安全性。图13是提供了这种处理的示例的流程图。
所述处理开始于框1302,此处操作系统202接收在设备100(D)上执行软件106的请求。在接收到请求后,策略处理210或其他某种处理可以在框1304分析所述代码以确定对数据和/或系统资源的访问是完成设备100(D)上的代码执行请求所必需的。所述处理然后可以移动到框1306,此处策略服务210进行到设备208上的下一个访问简档(在初始情况下,为第一个访问简档),并且分析在简档208中指定的权利602以确定它们是否足以允许代码在设备100(D)上执行。
所述处理然后可以移动到判定框1308,此处进行关于简档208中的权利602是否足够的确定。如果所述权利不足以允许执行代码,则所述处理可以移动到框1310,并且当前的访问简档208可以从可用于确认代码的数字签名的简档的名单(或其他分组)中排除。
一旦排除了某个访问简档,则所述处理然后可以移动到判定框1312,此处策略服务检查以查看是否存在另外的可用访问简档208。如果存在,则所述处理返回到框1306并且为该简档重复。如果在判定框1308处,当前简档208中的权利602被发现足以允许代码在设备100(D)上执行,则所述处理可以移动到判定框1312以检查另外的简档。如果设备上不再有另外的简档要检查,则所述处理然后可以移动到框1314,此处仅针对之前未被排除(在框1310处)的简档208确认代码的数字签名。因此,可以显著减少加密/解密和散列操作的数量。
图14A说明了示例的移动设备1400。移动设备1400可以例如是手持计算机、个人数字助理、蜂窝电话、网络装置、照相机、智能手机、增强型通用分组无线服务(EGPRS)移动电话、网络基站、媒体播放器、导航设备、电子邮件设备、游戏控制台、或这些数据处理设备或其他数据处理设备中的任意两个或更多个的组合。
移动设备概述
在一些实施方式中,移动设备1400包括触敏显示器1402。触敏显示器1402能够以液晶显示器(LCD)技术、发光聚合物显示器(LPD)技术或其他一些显示器技术而实现。触敏显示器1402可以对与用户的触觉和/或触知接触敏感。
在一些实施方式中,触敏显示器1402可以包括多点触摸敏感显示器1402。多点触摸敏感显示器1402可以例如处理多个同时的触摸点,包括处理关于每个触摸点的压力、程度和/或位置的数据。这种处理有助于利用多个手指的姿态和交互、弦(chording)、以及其他交互。还可以使用其他触敏显示器技术,例如使用触笔或其他指点设备进行接触的显示器。多点触摸敏感显示器技术的一些示例在美国专利No.6,323,846、No.6,570,557、No.6,677,932和No.6,888,536中描述,这些专利中的每一个以其整体作为参考并入本文。
在一些实施方式中,移动设备1400可以在触敏显示器1402上显示一个或多个图形用户界面以提供对各种系统对象的用户访问并传递信息给用户。在一些实施方式中,图形用户界面可以包括一个或多个显示对象1404、1406。在所示的示例中,显示对象1404、1406是系统对象的图形表示。系统对象的一些示例包括设备功能、应用、窗口、文件、警报、事件、或其他可标识的系统对象。
示例的移动设备功能
在一些实施方式中,移动设备1400可以实现多种设备功能,例如由电话对象1410表示的电话设备;由邮件对象1412表示的电子邮件设备;由地图对象1414表示的地图设备;Wi-Fi基站设备(未示出);以及由网络视频对象1416表示的网络视频传输和显示设备。在一些实施方式中,特定的显示对象1404,例如电话对象1410、邮件对象1412、地图对象1414和网络视频对象1416,可以显示在菜单栏1418中。在一些实施方式中,设备功能可以从诸如图14A中示出的图形用户界面之类的顶层图形用户界面来访问。触摸对象1410、1412、1414或1416中的一个可以例如启用相应的功能。
在一些实施方式中,移动设备1400可以实现网络分配功能。例如,所述功能可以使用户能在旅行中携带移动设备1400并且提供对其相关联网络的访问。特别地,移动设备1400可以将因特网访问(例如Wi-Fi)延伸到附近的其他无线设备。例如,移动设备1400可以配置为作为用于一个或多个设备的基站。这样,移动设备1400可以准予或拒绝对其他无线设备的网络访问。
在一些实施方式中,在调用设备功能后,移动设备1400的图形用户界面改变、或增加了另一个用户界面或用户界面元素,或被替换为另一个用户界面或用户界面元素,从而有助于用户访问与相应设备功能相关联的特定功能。例如,响应于用户触摸电话对象1410,触敏显示器1402的图形用户界面可以呈现关于各种电话功能的显示对象;类似地,触摸邮件对象1412可以使图形用户界面呈现关于各种电子邮件功能的显示对象;触摸地图对象1414可以使图形用户界面呈现关于各种地图功能的显示对象;而触摸网络视频对象1416可以使图形用户界面呈现关于各种网络视频功能的显示对象。
在一些实施方式中,图14A中的顶层图形用户界面环境或状态可以通过按压靠近移动设备1400底部的按钮1420而恢复。在一些实施方式中,每个相应的设备功能可以具有显示在触敏显示器1402上的相应的“首页(home)”显示对象,并且图14A中的图形用户界面环境可以通过按压“首页”显示对象而恢复。
在一些实施方式中,顶层图形用户界面可以包括附加的显示对象1406,诸如短消息收发服务(SMS)对象1430、日历对象1432、照片对象1434、照相机对象1436、计算器对象1438、股票对象1440、通讯录对象1442、媒体对象1444、网络对象1446、视频对象1448、设置对象1450和记事本对象(未示出)。触摸SMS显示对象1430可以例如启用SMS消息收发环境和支持功能;类似地,对显示对象1432、1434、1436、1438、1440、1442、1444、1446、1448和1450的每个选择可以启用相应的对象环境和功能。
还可以在图14A的图形用户界面中显示附加的和/或不同的显示对象。例如,如果设备1400用作其他设备的基站,则一个或多个“连接”对象可以出现在图形用户界面中以表示所述连接。在一些实施方式中,显示对象1406可以由用户配置,例如用户可以指定显示哪些显示对象1406,和/或可以下载提供其他功能和相应显示对象的附加的应用或其他软件。
在一些实施方式中,移动设备1400可以包括一个或多个输入/输出(I/O)设备和/或传感器设备。例如,可以包括扬声器1460和麦克风1462以帮助实现支持语音的功能,例如电话和语音邮件功能。在一些实施方式中,可以包括用于扬声器1460和麦克风1462的音量控制的上/下按钮1484。移动设备1400还可以包括用于呼入电话呼叫的铃声指示器的开/关按钮1482。在一些实施方式中,可以包括扬声器1464以有助于免提语音功能,诸如扬声器电话功能。还可以包括用于耳机和/或麦克风的音频插孔1466。
在一些实施方式中,可以包括接近传感器1468,以有助于检测用户将移动设备1400放置在用户耳朵附近,并且作为响应,释放(disengage)触敏显示器1402以避免意外的功能启用。在一些实施方式中,当移动设备1400位于用户耳朵附近时,触敏显示器1402可以关闭以保留额外的电力。
还可以使用其他传感器。例如,在一些实施方式中,可以利用环境光传感器1470来帮助调节触敏显示器1402的亮度。在一些实施方式中,可以利用加速度计1472以检测移动设备1400的移动,如方向箭头1474所示。因此,可以根据检测到的取向,例如纵向或横向,来呈现显示对象和/或媒体。在一些实施方式中,移动设备1400可以包括用于支持位置确定能力的电路和传感器,所述位置确定能力例如由全球定位系统(GPS)或其他定位系统(例如使用Wi-Fi接入点、电视信号、蜂窝网格、统一资源定位符(URL)的系统)提供的位置确定能力。在一些实施方式中,定位系统(例如GPS接收器)可以集成到移动设备1400中或作为可以通过接口(例如端口设备1490)耦合到移动设备1400以提供对基于位置的服务的访问的单独设备而被提供。
在一些实施方式中,可以包括端口设备1490,例如通用串行总线(USB)端口、或坞站端口(dockingport)、或一些其他的有线端口连接。端口设备1490可以例如被用于建立到其他计算设备的有线连接,所述其他设备诸如是其他通信设备1400、网络接入设备、个人计算机、打印机、显示屏、或能够接收和/或发送数据的其他处理设备。在一些实施方式中,端口设备1490允许移动设备1400使用一个或多个协议与主机设备同步,所述协议诸如TCP/IP、HTTP、UDP和任何其他已知的协议。
移动设备1400还可以包括照相机镜头和传感器1480。在一些实施方式中,照相机镜头和传感器1480可以位于移动设备1400的背面。所述照相机可以捕捉静止图像和/或视频。
移动设备1400还可以包括一个或多个无线通信子系统,例如802.11b/g通信设备1486和/或蓝牙TM通信设备1488。还可以支持其他通信协议,包括其他802.x通信协议(例如WiMax、Wi-Fi、3G)、码分多址(CDMA)、全球移动通信系统(GSM)、增强型数据GSM环境(EDGE)等。
示例性的可配置的顶层图形用户界面
图14B示出了设备1400的可配置的顶层图形用户界面的另一个示例。设备1400可以配置为显示一组不同的显示对象。
在一些实施方式中,设备1400的一个或多个系统对象中的每一个均具有与其相关联的一组系统对象属性;并且所述属性中的一个确定用于所述系统对象的显示对象是否将呈现在顶层图形用户界面中。这个属性可以由系统自动地设置或由用户通过如下所述的特定程序或系统功能而设置。图14B示出了如何将记事本对象1452(在图14A中未示出)添加到设备1400的顶层图形用户界面并将网络视频对象1416从设备1400的顶层图形用户界面移除的示例(例如当记事本系统对象和网络视频系统对象的属性被修改时)。
示例性的移动设备结构
图15是移动设备(例如移动设备1400)的示例性实施方式的框图1500。移动设备可以包括存储器接口1502、一个或多个数据处理器、图像处理器和/或中央处理单元1504、以及外围接口1506。存储器接口1502、一个或多个处理器1504和/或外围接口1506可以是分离组件或者可以集成在一个或多个集成电路中。所述移动设备中的各种组件可以通过一条或多条通信总线或信号线而耦合。
传感器、设备和子系统可以耦合到外围接口1506以帮助实现多种功能。例如,运动传感器1510、光传感器1512和接近传感器1514可以耦合到外围接口1506以帮助实现参考图14A所述的定向、照明和接近功能。其他传感器1516,诸如定位系统(例如GPS接收器)、温度传感器、生物特征传感器、或其他感测设备,也可以连接到外围接口1506以帮助实现相关功能。
可以使用照相机子系统1520和光学传感器1522,例如电荷耦合设备(CCD)或互补金属氧化物半导体(CMOS)光学传感器,来帮助实现照相机功能,诸如记录照片和视频剪辑。
可以通过一个或多个无线通信子系统1524来帮助实现通信功能,所述无线通信子系统可以包括射频接收器和发射器和/或光(例如红外)接收器和发射器。通信子系统1524的具体设计和实施方式可以取决于移动设备要在其上操作的通信网络。例如,移动设备可以包括被设计为基于GSM网络、GPRS网络、EDGE网络、Wi-Fi或WiMax网络、以及蓝牙TM网络操作的通信子系统1524。特别地,无线通信子系统1524可以包括托管协议,从而使移动设备可以被配置作为其它无线设备的基站。
音频子系统1526可以耦合到扬声器1528和麦克风1530,以帮助实现支持语音的功能,例如语音识别、语音复制、数字记录、以及电话功能。
I/O子系统1540可以包括触摸屏控制器1542和/或一个或多个其他输入控制器1544。触摸屏控制器1542可以耦合到触摸屏1546。触摸屏1546和触摸屏控制器1542可以例如使用多种触敏技术中的任何技术来检测与该触摸屏的接触和移动或断开,所述触敏技术包括但不限于电容性、电阻性、红外、和表面声波技术,以及其他接近传感器阵列或用于确定与触摸屏1546接触的一个或多个点的其他元件。
其他输入控制器(一个或多个)1544可以耦合到其他输入/控制设备1548,诸如一个或多个按钮、摇杆开关、拇指轮、红外端口、USB端口和/或诸如触笔之类的指点设备。所述一个或多个按钮(未示出)可以包括用于扬声器1528和/或麦克风1530的音量控制的上/下按钮。
在一个实施方式中,按压按钮达第一持续时间可以解除触摸屏1546的锁定;而按压按钮达第二持续时间可以使移动设备开启或关闭,其中第二持续时间比第一持续时间长。用户可能能够定制一个或多个按钮的功能。触摸屏1546也可以例如用于实现虚拟或软按钮和/或键盘。
在一些实施方式中,所述移动设备可以呈现记录的音频和/或视频文件,诸如MP3、AAC和MPEG文件。在一些实施方式中,移动设备可以包括诸如iPodTM等MP3播放器的功能。因此,所述移动设备可以包括与iPodTM兼容的32针连接器。还可以使用其他的输入/输出和控制设备。
存储器接口1502可以耦合到存储器1550。存储器1550可以包括高速随机存取存储器和/或非易失性存储器,诸如一个或多个磁盘存储器设备、一个或多个光学存储器设备、和/或闪存(例如NAND、NOR)。存储器1550可以存储操作系统1552,诸如Darwin、RTXC、LINUX、UNIX、OSX、WINDOWS、或诸如VxWorks等嵌入式操作系统。操作系统1552可以包括用于处理基础系统服务和用于执行依赖于硬件的任务的指令。在一些实施方式中,操作系统1552可以是内核(例如UNIX内核)。
存储器1550还可以存储通信指令1554以帮助实现与一个或多个附加设备、一个或多个计算机和/或一个或多个服务器的通信。存储器1550可以包括:图形用户界面指令1556,以有助于图形用户界面处理;传感器处理指令1558,以有助于传感器相关的处理和功能;电话指令1560,以有助于电话相关的处理和功能;电子消息收发指令1562,以有助于电子消息收发相关的处理和功能;网络浏览指令1564,以有助于网络浏览相关的处理和功能;媒体处理指令1566,以有助于媒体处理相关的处理和功能;GPS/导航指令1568,以有助于GPS和导航相关的处理和指令;照相机指令1570,以有助于照相机相关的处理和功能;和/或其他软件指令1572,以有助于其他处理和功能,例如访问控制管理功能。存储器1550还可以存储其他软件指令(未示出),例如网络视频指令,以有助于网络视频相关的处理和功能;和/或网络购物指令,以有助于网络购物相关的处理和功能。在一些实施方式中,媒体处理指令1566被划分为音频处理指令和视频处理指令,以分别有助于与音频处理相关的处理和功能和与视频处理相关的处理和功能。激活记录和国际移动设备身份码(IMEI)1574或类似硬件标识符也可以被存储在存储器1550中。
上述标识的每个指令和应用均可以相应于用于执行上述一个或多个功能的一组指令。这些指令不需要被实现为单独的软件程序、过程或模块。存储器1550可以包括附加的指令或更少的指令。此外,移动设备的各种功能可以在硬件和/或软件中实现,包括在一个或多个信号处理和/或专用集成电路中实现。
本领域技术人员将理解,在不背离本发明的精神的情况下可以进行大量的和不同的修改。因此,应该清楚地理解,本发明的形式仅是说明性的,而不意图限制本发明的范围。虽然以上的具体实施方式显示、描述并且指出了应用到各种实施例的本发明的新颖特征,但将理解,本领域技术人员在不背离本发明的精神的情况下可以对所说明的设备或处理的形式和细节进行各种省略、替换和改变。

Claims (34)

1.一种生成开发者访问简档的计算机执行的方法,所述方法包括:
接收开发者标识符、表示开发者计算设备的设备标识符以及关于所述开发者计算设备的请求的权利;
至少部分基于所述请求的权利生成权利数据;
使用可信任的权威机构私用密钥数字签署所述开发者标识符、所述设备标识符以及生成的所述权利数据;以及
将所述数字签署的数据传送到开发者。
2.如权利要求1所述的方法,其中所述权利数据表示在与所述设备标识符相关联的计算设备上访问数据的权利。
3.如权利要求1所述的方法,其中所述权利数据表示在与所述设备标识符相关联的计算设备的操作系统中访问服务的权利。
4.如权利要求1所述的方法,其中所述开发者标识符包括开发者公开密钥。
5.如权利要求1所述的方法,其中所述设备标识符包括序列号。
6.如权利要求1所述的方法,其中所述计算设备包括移动电话听筒。
7.如权利要求1所述的方法,其中所述数字签署的数据包括所述开发者访问简档。
8.如权利要求7所述的方法,其中所述开发者访问简档经由软件开发计算设备传输到移动电话设备。
9.一种具有在其上存储的计算机可执行指令的计算机可读介质,当所述指令在处理器上执行时,使得计算设备执行生成开发者访问简档的方法,所述方法包括:
接收开发者标识符、表示开发者计算设备的设备标识符以及关于所述开发者计算设备的请求的权利;
至少部分基于所述请求的权利生成权利数据;
使用可信任的权威机构私用密钥数字签署所述开发者标识符、所述设备标识符以及生成的所述权利数据;以及
将所述数字签署的数据传送到开发者。
10.一种在操作环境中提供开发者访问的计算机执行的方法,包括:
接收来自软件开发者的对设备的开发访问的请求,所述开发者访问请求包括至少一个请求的权利;
响应于所述请求生成访问简档,所述开发者访问简档包括表示所述请求的权利的权利数据;以及
将所述开发者访问简档传输到所述设备和所述开发者指定的所述软件开发者。
11.如权利要求10所述的方法,其中所述权利数据包括权利白名单。
12.如权利要求10所述的方法,其中所述权利数据包括权利黑名单。
13.如权利要求10所述的方法,其中所述权利数据包括权利白名单和权利黑名单。
14.如权利要求10所述的方法,其中所述权利数据包括允许调试权利、允许跟踪权利、允许访问通讯录数据权利或允许访问多媒体应用API权利中的至少一个或多个。
15.如权利要求10所述的方法,其中对开发访问的所述请求由可信任的权威机构接收。
16.如权利要求10所述的方法,其中对开发访问的所述请求进一步包括与所述软件开发者相关联的公开密钥。
17.如权利要求10所述的方法,其中所述开发者访问简档包括至少一个设备标识符和至少一个开发者标识符。
18.如权利要求17所述的方法,进一步包括在关于所述至少一个设备标识符的设备上安装策略服务。
19.如权利要求18所述的方法,其中所述策略服务被配置为仅当所述权利被满足时才允许代码在计算机设备上执行。
20.一种具有在其上存储的计算机可执行指令的计算机可读介质,当所述指令在处理器上执行时,使得计算设备执行在操作环境中提供开发者访问的方法,所述方法包括:
接收来自软件开发者的对设备的开发访问的请求,所述开发者访问请求包括至少一个请求的权利;
响应于所述请求生成访问简档,所述开发者访问简档包括表示所述请求的权利的权利数据;以及
将所述开发者访问简档传输到所述设备和所述开发者指定的所述软件开发者。
21.一种在计算设备中认证软件的计算机执行的方法,所述方法包括:
接收请求以执行代码,其中所述代码请求访问被保护的系统资源;
访问开发者访问简档中的权利数据,所述开发者访问简档存储在所述设备的存储器中以确定所述计算设备被授权允许所述代码访问所述设备的所述被保护的系统资源,并且由相应于所述开发者访问简档的开发者访问所述设备的所述被保护的系统资源;以及
如果所述设备和所述开发者基于所述开发者访问简档中的权利被授权允许所述代码访问所述被保护的系统资源,则执行所述代码。
22.如权利要求21所述的方法,其中访问所述权利数据由策略服务执行,并且其中所述策略服务确定是否允许执行所述代码。
23.如权利要求22所述的方法,其中所述策略服务运行在所述设备上的存储器的用户空间中。
24.如权利要求21所述的方法,其中所述代码包括计算机软件应用的存储页。
25.如权利要求21所述的方法,其中所述代码包括计算机软件应用的多个页。
26.如权利要求21所述的方法,其中所述开发者访问简档进一步包括设备标识符数据。
27.如权利要求26所述的方法,进一步包括访问所述设备标识符数据以确定所述计算设备被授权执行所述代码。
28.如权利要求27所述的方法,其中访问所述设备标识符以确定所述计算设备被授权执行所述代码包括:将所述访问简档的所述设备标识符数据中的设备标识符与跟所述计算设备相关联的设备标识符相比较。
29.如权利要求21所述的方法,其中所述计算设备包括移动电话设备。
30.如权利要求21所述的方法,其中所述移动设备的操作系统被配置为仅允许数字签署代码以在所述设备上执行。
31.一种具有在其上存储的计算机可执行指令的计算机可读介质,当所述指令在处理器上执行时,使得计算设备执行认证计算设备中的软件的方法,所述方法包括:
接收请求以执行代码,其中所述代码请求访问被保护的系统资源;
访问开发者访问简档中的权利数据,所述开发者访问简档存储在所述设备的存储器中以确定所述计算设备被授权允许所述代码访问所述设备的所述被保护的系统资源,并且由相应于所述开发者访问简档的开发者访问所述设备的所述被保护的系统资源;以及
如果所述设备和所述开发者基于所述开发者访问简档中的权利被授权允许所述代码访问所述被保护的系统资源,则执行所述代码。
32.一种在计算设备上执行代码的方法,所述方法包括:
接收请求以在所述设备上执行代码,其中所述代码请求访问被限制的系统资源;
响应于所述请求检索所述设备和所述执行代码的开发者指定的包括权利数据的开发者访问简档;
将检索到的权利数据与由所述代码要求的所述访问相比较;以及
基于所述比较允许所述代码的执行。
33.一种用于为软件开发者提供在被限制的操作环境中执行软件的能力的系统,该系统包括:
第一计算设备,其被配置为生成开发者访问简档,所述开发者访问简档包括表示设备的数据、表示开发者的数据以及表示权利的数据;
包括软件开发环境的第二计算设备,该第二计算设备被配置为编译目标代码并且以与所述开发者相关联的数字证书数字签署至少一些被编译的目标代码;以及
第三计算设备,其被配置为接收生成的开发者访问简档,并且仅当由代码请求的访问被表示权利的所述数据许可时才执行所述代码。
34.一种移动电话设备,包括:
与所述移动电话设备相关联的设备标识符;
由数字证书数字签署的软件代码,所述数字证书关于开发者并特定于所述设备;
包括权利的至少一个开发者访问简档;
至少一个策略服务,其被配置为处理请求以通过确定所述权利允许访问所述移动电话设备上的系统资源而执行所述软件代码。
CN2009801159898A 2008-03-04 2009-03-02 在安全操作环境中为软件开发者管理代码权利 Pending CN102016864A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US3373608P 2008-03-04 2008-03-04
US61/033,736 2008-03-04
PCT/US2009/035736 WO2009111401A1 (en) 2008-03-04 2009-03-02 Managing code entitlements for software developers in secure operating environments

Publications (1)

Publication Number Publication Date
CN102016864A true CN102016864A (zh) 2011-04-13

Family

ID=40718993

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009801159898A Pending CN102016864A (zh) 2008-03-04 2009-03-02 在安全操作环境中为软件开发者管理代码权利

Country Status (7)

Country Link
US (1) US20090249071A1 (zh)
EP (1) EP2252957A1 (zh)
JP (1) JP2011515743A (zh)
KR (1) KR20100126476A (zh)
CN (1) CN102016864A (zh)
AU (1) AU2009222082A1 (zh)
WO (1) WO2009111401A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104737173A (zh) * 2012-10-15 2015-06-24 微软公司 基于开发者简档的许可证信息访问

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8434093B2 (en) 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US8776038B2 (en) 2008-08-07 2014-07-08 Code Systems Corporation Method and system for configuration of virtualized software applications
CN101661472B (zh) * 2008-08-27 2011-12-28 国际商业机器公司 协作搜索方法及系统
JP2011096050A (ja) * 2009-10-30 2011-05-12 Kyocera Mita Corp インストーラ作成方法、インストーラ作成プログラム、インストーラ作成装置およびインストーラシステム
US8954958B2 (en) 2010-01-11 2015-02-10 Code Systems Corporation Method of configuring a virtual application
US8533811B2 (en) * 2010-01-20 2013-09-10 Microsoft Corporation Developer phone registration
US8959183B2 (en) 2010-01-27 2015-02-17 Code Systems Corporation System for downloading and executing a virtual application
US9104517B2 (en) 2010-01-27 2015-08-11 Code Systems Corporation System for downloading and executing a virtual application
US9229748B2 (en) 2010-01-29 2016-01-05 Code Systems Corporation Method and system for improving startup performance and interoperability of a virtual application
US8631390B2 (en) 2010-04-02 2014-01-14 Apple Inc. Archiving a build product
US8763009B2 (en) 2010-04-17 2014-06-24 Code Systems Corporation Method of hosting a first application in a second application
US8473961B2 (en) 2011-01-14 2013-06-25 Apple Inc. Methods to generate security profile for restricting resources used by a program based on entitlements of the program
US8782106B2 (en) 2010-07-02 2014-07-15 Code Systems Corporation Method and system for managing execution of virtual applications
US9021015B2 (en) 2010-10-18 2015-04-28 Code Systems Corporation Method and system for publishing virtual applications to a web server
US8621591B2 (en) 2010-10-19 2013-12-31 Symantec Corporation Software signing certificate reputation model
US9209976B2 (en) * 2010-10-29 2015-12-08 Code Systems Corporation Method and system for restricting execution of virtual applications to a managed process environment
US8671385B2 (en) 2011-01-07 2014-03-11 Mastercard International Incorporated Methods and systems for throttling calls to a service application through an open API
US8677308B2 (en) 2011-01-07 2014-03-18 Mastercard International Incorporated Method and system for generating an API request message
US9032204B2 (en) 2011-01-07 2015-05-12 Mastercard International Incorporated Methods and systems for providing a signed digital certificate in real time
US9083534B2 (en) 2011-01-07 2015-07-14 Mastercard International Incorporated Method and system for propagating a client identity
US8707276B2 (en) * 2011-01-07 2014-04-22 Mastercard International Incorporated Method and system for managing programmed applications in an open API environment
KR101250661B1 (ko) * 2011-02-08 2013-04-03 주식회사 팬택 모바일 플랫폼 보안 장치 및 방법
US9754115B2 (en) * 2011-03-21 2017-09-05 Irdeto B.V. System and method for securely binding and node-locking program execution to a trusted signature authority
KR101295508B1 (ko) * 2011-09-09 2013-08-23 주식회사 팬택 스마트 단말기에서 어플리케이션을 실행하기 위한 제어 장치 및 그 방법
US8572368B1 (en) * 2011-09-23 2013-10-29 Symantec Corporation Systems and methods for generating code-specific code-signing certificates containing extended metadata
KR101294866B1 (ko) * 2011-09-30 2013-08-23 주식회사 포스코 개발환경 관리 시스템 및 이의 개발환경 관리 방법
US20130132933A1 (en) * 2011-11-17 2013-05-23 Microsoft Corporation Automated compliance testing during application development
KR101432533B1 (ko) * 2011-12-20 2014-08-25 한상진 모바일 광고 시스템 및 그의 광고 방법
WO2014030879A1 (ko) * 2012-08-20 2014-02-27 에스케이플래닛 주식회사 광고 서비스 시스템 및 그 방법, 그리고 이에 적용되는 장치 및 그 동작 방법
BR112015002976A2 (pt) * 2012-08-21 2017-07-04 Sony Corp método de transmissão de informação de validação de assinatura, aparelho e método de processamento de informação, e, aparelho de fornecimento de difusão
GB2508641A (en) 2012-12-07 2014-06-11 Ibm Testing program code created in a development system
US9985992B1 (en) * 2014-09-19 2018-05-29 Jpmorgan Chase Bank, N.A. Entitlement system and method
CN105159705B (zh) * 2015-08-07 2018-07-17 北京思特奇信息技术股份有限公司 一种基于xcodebuild打包不定个数工程文件的方法及系统
US10574459B2 (en) * 2015-09-30 2020-02-25 Microsoft Technology Licensing, Llc Code signing service
US10262156B1 (en) * 2016-04-29 2019-04-16 Wells Fargo Bank, N.A. Real-time feature level software security
US11449640B1 (en) * 2016-04-29 2022-09-20 Wells Fargo Bank, N.A. Real-time feature level software security
US11354399B2 (en) 2017-07-17 2022-06-07 Hewlett-Packard Development Company, L.P. Authentication of entitlement certificates
WO2019022738A1 (en) * 2017-07-26 2019-01-31 Hewlett-Packard Development Company, L.P ENABLING MANAGEMENT
US10592437B2 (en) * 2017-07-31 2020-03-17 Hewlett Packard Enterprise Development Lp Memory matching key capability
US11195202B2 (en) 2018-10-17 2021-12-07 Microsoft Technology Licensing, Llc Dynamic monitoring and control of web page experiences based upon user activity of associated applications
KR102183828B1 (ko) * 2018-11-05 2020-11-27 옴니비스타 주식회사 광고 앱을 이용한 광고 시스템 및 이를 이용한 광고 방법
US11194559B2 (en) * 2019-08-06 2021-12-07 Saudi Arabian Oil Company Method and apparatus for platform as a service (PaaS) automation control
CN115730339B (zh) * 2023-01-26 2023-06-13 深圳海云安网络安全技术有限公司 一种基于ide源码保护的插件代码防泄密方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6154844A (en) * 1996-11-08 2000-11-28 Finjan Software, Ltd. System and method for attaching a downloadable security profile to a downloadable
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
CN101046838A (zh) * 2006-03-28 2007-10-03 国际商业机器公司 用于在软件应用中设置安全参数的方法和系统

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5825877A (en) * 1996-06-11 1998-10-20 International Business Machines Corporation Support for portable trusted software
US6189097B1 (en) * 1997-03-24 2001-02-13 Preview Systems, Inc. Digital Certificate
JPH10301773A (ja) * 1997-04-30 1998-11-13 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体
EP1717681B1 (en) 1998-01-26 2015-04-29 Apple Inc. Method for integrating manual input
FI990461A0 (fi) * 1999-03-03 1999-03-03 Nokia Mobile Phones Ltd Menetelmä ohjelmiston lataamiseksi palvelimelta päätelaitteeseen
US6779117B1 (en) * 1999-07-23 2004-08-17 Cybersoft, Inc. Authentication program for a computer operating system
JP2001306313A (ja) * 2000-04-17 2001-11-02 Matsushita Electric Ind Co Ltd アプリケーションサーバシステム
US6766353B1 (en) * 2000-07-11 2004-07-20 Motorola, Inc. Method for authenticating a JAVA archive (JAR) for portable devices
JP4136325B2 (ja) * 2000-08-31 2008-08-20 株式会社リコー 画像形成システム、ソフトウエア取得方法、画像形成装置およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
CN101714201B (zh) * 2000-09-21 2016-02-03 黑莓有限公司 代码签字系统及方法
JP4067757B2 (ja) * 2000-10-31 2008-03-26 株式会社東芝 プログラム配布システム
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
JP2003202929A (ja) * 2002-01-08 2003-07-18 Ntt Docomo Inc 配信方法および配信システム
GB2392590B (en) * 2002-08-30 2005-02-23 Toshiba Res Europ Ltd Methods and apparatus for secure data communication links
US20040064457A1 (en) * 2002-09-27 2004-04-01 Zimmer Vincent J. Mechanism for providing both a secure and attested boot
US7480935B2 (en) * 2002-10-10 2009-01-20 International Business Machines Corporation Method for protecting subscriber identification between service and content providers
US8874487B2 (en) * 2004-04-14 2014-10-28 Digital River, Inc. Software wrapper having use limitation within a geographic boundary
US8694802B2 (en) * 2004-04-30 2014-04-08 Apple Inc. System and method for creating tamper-resistant code
CA2569714A1 (en) * 2004-06-08 2005-12-22 Dartdevices Corporation Architecture, apparatus and method for device team recruitment and content renditioning for universal device interoperability platform
WO2006101549A2 (en) * 2004-12-03 2006-09-28 Whitecell Software, Inc. Secure system for allowing the execution of authorized computer program code
JP2006221629A (ja) * 2005-02-07 2006-08-24 Sony Computer Entertainment Inc プロセッサのリソース管理によるコンテンツ制御方法および装置
JP4606339B2 (ja) * 2005-02-07 2011-01-05 株式会社ソニー・コンピュータエンタテインメント セキュアなプロセッサの処理の移行を実施する方法および装置
US8103868B2 (en) * 2005-04-20 2012-01-24 M-Qube, Inc. Sender identification system and method
US7797545B2 (en) * 2005-09-29 2010-09-14 Research In Motion Limited System and method for registering entities for code signing services

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6154844A (en) * 1996-11-08 2000-11-28 Finjan Software, Ltd. System and method for attaching a downloadable security profile to a downloadable
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
CN101046838A (zh) * 2006-03-28 2007-10-03 国际商业机器公司 用于在软件应用中设置安全参数的方法和系统

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104737173A (zh) * 2012-10-15 2015-06-24 微软公司 基于开发者简档的许可证信息访问
CN104737173B (zh) * 2012-10-15 2017-11-17 微软技术许可有限责任公司 基于开发者简档的许可证信息访问
CN107665292A (zh) * 2012-10-15 2018-02-06 微软技术许可有限责任公司 基于开发者简档的许可证信息访问
CN107665292B (zh) * 2012-10-15 2020-11-17 微软技术许可有限责任公司 基于开发者简档的许可证信息访问

Also Published As

Publication number Publication date
WO2009111401A1 (en) 2009-09-11
JP2011515743A (ja) 2011-05-19
AU2009222082A1 (en) 2009-09-11
EP2252957A1 (en) 2010-11-24
KR20100126476A (ko) 2010-12-01
US20090249071A1 (en) 2009-10-01

Similar Documents

Publication Publication Date Title
CN102016864A (zh) 在安全操作环境中为软件开发者管理代码权利
CN105848134B (zh) 虚拟sim卡管理装置、通信终端、访问控制及管理方法
US10521214B2 (en) Methods and systems for upgrade and synchronization of securely installed applications on a computing device
KR101239012B1 (ko) 적어도 하나의 설치된 프로파일에 기초하여 소프트웨어 코드의 실행을 인가하는 시스템 및 방법
CN102016865A (zh) 基于可用权利来授权执行软件代码的系统和方法
CN102016866B (zh) 基于授予承载商的权利授权在设备上执行软件代码的系统和方法
CN100593166C (zh) 便携式计算环境
US20090228704A1 (en) Providing developer access in secure operating environments
US20110010759A1 (en) Providing a customized interface for an application store
US20100313196A1 (en) Managing securely installed applications
US20130061314A1 (en) Secure software installation
US20090249064A1 (en) System and method of authorizing execution of software code based on a trusted cache
TW201241668A (en) Method and device for managing digital usage rights of documents
GB2599057A (en) Terminal for conducting electronic transactions
EP3777082B1 (en) Trusted platform module-based prepaid access token for commercial iot online services
CN115943376A (zh) 认证界面元素交互
CN115277143A (zh) 一种数据安全传输方法、装置、设备及存储介质
CN106599676A (zh) 可信进程识别方法及装置
CN107229845A (zh) 终端上的插件处理方法、装置及终端
KR102657388B1 (ko) 암호화될 데이터의 정보량에 기반하여 암호화에 사용될 키를 선택하는 전자 장치 및 전자 장치의 동작 방법
JP2014002435A (ja) 認証コード発行システム、および認証システム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20110413