可信代码群组的制作方法

文档序号:6453860阅读:175来源:国知局
专利名称:可信代码群组的制作方法
技术领域
本发明通常涉及软件安全性领域,且更明确地说,涉及软件安全性的验证及证实。
背景技术
当今,软件应用程序通常由在一起工作以提供共用"应用程序功能"的数个不同 的可执行模块组成。例如,新应用程序的开发者可写入实施所述应用程序的"核心业 务逻辑"的源代码,同时再分类到第三方或其它代码程序库以用于更多例程功能 (functionality),例如,共用对话框或通信功能。在运行时间时,应用程序被启动且 指令操作系统加载动态链接到正执行应用程序代码的其它程序库的实例。接着,在应 用程序正执行时,应用程序及程序库通常作为存储器中的单个单元一起工作。
.然而,管理正执行应用程序代码与程序库之间的信任时困难的。在应用程序正执 行时,其加载的任何程序库均被映射到应用程序的存储器空间或过程边界且所述程序 库就像应用程序的一部分那样执行。 一旦加载,应用程序与程序库之间便不存在边界, 且当应用程序调用程序库时,其对所述程序库便完全信任。程序库可修改、删除或在 分布应用程序己存取的任何或所有数据。随着应用程序变得更复杂且程序库更经常地 被从各种可能的不可信位置加载到计算装置上,关注可由应用程序调用或加载的代码 程序库的安全性及完整性(即,"可信性")变得更重要。
直到现在,一种可胜任评估及/或确保代码程序库的可信性的机构一直困扰着所属 领域的技术人员。

发明内容
本发明针对用于确保或加强应用程序与程序库之间的信任的技术及机构。在一个 方面,本发明设想一种用于确保代码模块之间的信任的方法。所述方法包含接收使用 一类别功能的应用程序,所述应用程序包含所述应用程序信任的用以实施所述类别的 可信代码群组("TCG")列表。所述方法还包含接收实施所述类别的功能的程序库, 所述程序库是使用签名密钥签署的,所述签名将所述程序库与TCG相关联,所述TCG 是可信性的认可。当起始调用以致使加载所述程序库时,所述方法包含在加载所述程 序库之前,致使验证所述程序库上的签名以确定所述程序库是否是所列出的TCG中的 一者的成员。
在另一方面,本发明设想一种用于验证程序库的可信性的方法及计算机可读媒
体。所述方法包含从应用程序接收加载所述程序库的指令,所述应用程序具有被授权 TCG ID的相关联列表,每一 TCG ID与TCG相关联,所述TCG表示与程序库群组相 关联的信任等级。所述方法进一步包含检验所述程序库以检测将TCG ID与所述程 序库相关联的数字签名;将所述程序库的所述TCG ID与和所述应用程序相关联的所 述被授权TCGID列表相比较以确定所述程序库是否被授权使用所述应用程序来执行; 及如果所述程序库被授权,那么加载所述程序库。
在又一方面,本发明设想一种用于验证程序库的可信性的设备。所述设备包含
存储媒体,其上存储有应用程序及程序库;处理器;及存储器,其耦合到所述处理器
及所述存储媒体且其中驻留计算机可执行组件。所述组件操作以致使所述处理器执行
从应用程序接收加载所述程序库的指令,所述应用程序具有被授权TCG ID的相关联 列表,每一TCGID与TCG相关联,所述TCG表示与程序库群组相关联的信任等级; 检验所述程序库以检测将所述TCG ID与所述程序库相关联的数字签名;将所述程序 库的所述TCG ID与和所述应用程序相关联的所述被授权TCG ID列表相比较,以确 定所述程序库是否被授权以使用所述应用程序来执行;及如果所述程序库被授权,那 么加载所述程序库。


结合图式依据下文所述的详细说明,本发明的特征及优点将变得更明了,在所有 图式中相同的参考字符识别对应的元件。
图1显示根据本发明的一个实施方案正执行应用程序及程序库的实例的系统存储器。
图2是各自具有一个或一个以上相关联可信代码群组("TCG")的可信实体("TE") 层级的概念性图解。
图3图解说明样本开发环境,其中代码开发者与TE互动以在TE的控制下获得 经批准用于特定TCG的程序库。
图4图解说明根据本发明的实施方案的计算装置,例如其上执行应用程序及程序 库的手持式计算装置。
图5是操作流程图,其大体上图解说明用于确保应用程序与所述应用程序加载的 程序库之间的信任的方法。
图6是功能框图,其大体上图解说明特别适合本发明的实施方案的样本计算装置 的核心组件。
具体实施例方式
以下是对本发明的各种实施例的详细说明,其使应用程序开发者能够控制应用程 序可在运行时间时致使加载的程序库的可信性。简单地说,本发明设想允许程序库开
发者使其共享程序库经评估而包含在一个或一个以上"可信代码群组"中。应用程序 开发者接着包含识别应用程序在运行时间时应信任的那些可信代码群组的列表。当安 装的应用程序被启动且试图加载程序库时,信任管理器验证所述程序库是否在所述应 用程序辨识的可信代码群组内。如果在所述群组内,那么信任管理器允许加载所述程 序库,且如果不在所述群组内,那么信任管理器放弃所述加载。
为开始论述,图1显示根据本发明的一个实施方案的系统存储器101,其中正执 行应用程序111及程序库131的实例。其它代码也可在系统存储器101中执行,例如 其它应用程序145及/或操作系统代码147。在继续进行之前,提供将在整个文献中使 用的术语的一些定义是有帮助的。
术语"信任者"意指加载被信任者的任何可执行代码(例如,应用程序)。信任 者具有围绕其的存储器或过程保护边界且制定跨越所述边界来往的政策。简单的用户 应用程序仅是信任者的一个实例。其它实例包含但不限于脚本、网页内容(例如,"快 闪"或"冲击波"组件)、用户接口(例如,高等级UI描述语言的用户接口规格)及类似 物。
术语"被信任者"意指信任者在运行时间时加载的任何可执行代码(例如,程序库) 或配置数据。术语"被信任者"包含但不限于共享及公共程序库、动态及静态链接的 程序库、"扩展"、脚本、配置、内容、用户接口或如此项技术中所用术语的任何其 它资源(例如,图像或多媒体数据)。
在整个文献中术语"应用程序"或"信任者"可互换使用。同样,在整个文献中 术语"程序库"及"被信任者"可互换使用。因此,不应向术语"应用程序"及"程 序库"附加不同于恰好归属于所述术语的意义的特定意义。
如图1中所示,当将应用程序111加载到存储器101中时,便创建其中所述应用 程序执行的过程,且所述过程具有过程边界113。正在过程边界113内执行的代码通 常可自由地存取所述边界内的任何存储器位置,但不能(至少不能直接地)在过程边 界113之外存取。虽然此处图解说明为连续存储器空间,但将了解过程还可具有不连 续的存储器位置。
在此实例中,应用程序111正在过程边界113内执行且分配有自己的用于数据115 的存储器空间。虽然此处显示为单个连续数据空间115,但将了解应用程序111可具 有用于不同类型数据的数个不同数据位置。
在执行期间的任一点处,应用程序111可致使加载一个或一个以上程序库,例 如,程序库131。在此实例中,程序库131可以是由应用程序111使用但不是应用程 序lll的部分的任何补充代码。在一个实例中,程序库131可以是实施某一核心或特 定功能的第三方程序库。
程序库131自己通常不具有过程或保护边界,而是在应用程序的过程边界113内 执行。因此,程序库131可存取应用程序lll拥有的任何事物,例如,应用程序的数 据115且甚至应用程序可执行代码的多个部分。然而,程序库131可具有其自己的数
据117,应用程序111可存取数据117。正是此对应用程序的代码111及数据115的自 由存取创建了对应用程序111与程序库131之间的牢固信任关系的需要。
如此专利文献的剩余部分中的更全面描述,应用程序111说明定义程序库131必 须属于的信任关系的某一信息。当加载时,程序库131指示其不属于的那些信任关系。 当程序库131开始加载时,如果其不属于应用程序lll所辨识的信任关系,那么放弃 所述加载。
图2是可信实体("TE")的层级200的概念性图解,所述可信实体的每一者具有 一个或一个以上相关联的可信代码群组("TCG")。根据本发明,可信代码群组("TCG") 实质上是可相等信任的代码模块群组。可信实体(TE)是批准或认证代码模块进入到一 个或一个以上TCG的组织或可能个体。设想特定TE将拥有特定TCG的所有权且评 估或测试针对所述TCG中的成员资格提议的代码模块。
在一个特定实施方案中,每一TCG具有相关联的TCG识别符(TCGID)。 TCG ID 是32-位的整数,其识别所述TCG且唯一地区别每一TCG与其它TCC。在此特定实 施方案中,TCG ID的完整范围可从0x00000000扩展到OxFFFFFFFF。参照图2,最 高等级TE(g卩,TE201)具有整个范围的TCGID的所有权。此最高等级TE 201可以是 负责移动装置上的操作系统的组织或类似者。
最高等级TE201将整个TCG ID范围内对应于专家或特定信任域的某一区域的范 围委授给从属TE。在一个实例中,从属TE(安全TE 211)可具有验证及认可与任一类 型的安全特征相关的代码程序库的责任。因此,将用于安全特征的TCG ID范围授给 安全TE211。安全TE211可进一步将其TCGID的子范围授给下一等级TE。例如, 安全TE211可将TCGID的子范围授给加密TE221或鉴别TE 222的。
最高等级TE201可将用于用户接口组件的TCG ID的不同范围授给负责用户接口 程序库的用户接口 TE212。用户接口 TE212接着将其TCG ID的子范围授予负责共用 对话的共用对话TE 223。此层级系统允许灵活地分布TCG ID的范围以便可在将来适 应额外的TCG。将了解整个范围的某些子范围可能出于某种原因而被排除用作TCG ID,例如保留用于另一使用。
为使用具体实例来图解说明此概念,假设最高等级TE 201将范围OxOOOFOOOO到 0x000FFFFF授给安全TE 211 ,将范围0x00100000到0x1 A000O授给用户接口 TE 212。 安全TE 211可依次将子范围0x000F000F到0x000F00FF授给加密TE 221且将子范围 OxOOOFOlOO至U OxOOOFOFFF授给鉴别TE 222。用户接口 TE 212可将子范围 0x0010F000到0x0010FFFF授给共用对话TE223。当然,这些特定范围及子范围仅是 用以图解说明所述概念的实例且在任何方式中也未必是本发明所必需的。
图3图解说明样本开发环境,其中代码开发者301与TE 331互动以在TE 331控 制下获得被签署到特定TCG中的共享程序库311。在此实例中,代码开发者301可开 发出可在数字权利管理("DRM")应用程序中用于解码安全媒体内容的程序库311。 TE331已被授给范围TCGID332,从而具有批准程序库进入到用于DRM程序库的特
定TCG的授权。在此实例中,TE 331从根TE授权或"CA" 333接收认可程序库的 授权。
开发者301向TE 331呈现未签署的程序库311以便得到批准,其可包含任何形 式的调查,例如,故障检査、病毒检査、性能评估或或许仅验证开发者301的身份以 确保开发者301是可信的。如果未签署的程序库311及/或开发者301满意TE的准则, 那么TE331 "签署"未签署的程序库311。签署未签署的程序库311可包含产生未签 署程序库311的杂凑值且使用私钥320来编码所述杂凑值。经编码的杂凑值称为未签 署程序库311的数字签名325。
在一个实施方案中,当产生数字签名325时,将程序库正签署到其中的群组的TCG ID 312添加到未签署程序库311。此允许在签署过程期间从添加到程序库的信息直接 识别TCG。另一选择是,TCGID可与签署授权(例如,TE331或CA333)相关联并嵌 入到其根证书中,以允许在运行时间验证数字签名325时间接地从证书链确定TCG。 可应用于本发明的实施方案的共用数字证书标准是ITU-T X.509标准。
将了解,数字证书325可在TCG ID 312被包含在封装内的情况下明确地或在证 书335通过证书链与TCG相关联的情况下隐含地将经签署的程序库321有效地绑定到 TCG。
TE331接着返回经签署的程序库321、数字签名325及可能地程序库已被签署到 其中的群组的TCGID 312。 TE 331还返回TE的证书335,其包含TE的供用于验证 数字签名325的真实性的公钥。实际上,TE证书335可以是证书链,其包含产生可信 根证书的中间证书,例如,CA 333的证书。开发者301现在准备好分布经签署的程序 库321。
应注意,虽然此处描述为执行程序库批准及证书颁发两者的单个实体,但所述两 个任务可由单独实体来执行。例如,在某些情况下,TE331可向CA 335请求颁发证 书335或或许向完全单独的实体请求。
图4图解说明计算装置401,在此实例中其是上面执行应用程序411的手持式计 算装置。图6中图解说明且在下文中描述可用于本发明的实施方案的一个实例性计算 装置。计算装置401包含操作系统420及一个或一个以上已安装的应用程序(例如,应 用程序411),还存在可如上所述认证的(例如,经认证的程序库417)或未认证(例 如,程序库419)的一个或一个以上代码程序库415。在此实例中,经认证的程序库 417已被批准包含在TCG中,且已由适当的TE签署,如上所述。
应用程序411具有包含被授权TCG列表412的元数据,被授权TCG列表412可 以是应用程序411说明其辨识的被授权TCG ID的列表。此意味着使用应用程序411 加载的任何程序库415必须在被授权TCG列表412中的TCG中的一者中。将了解被 授权TCG列表412可包含可信TCGID的范围,而非仅包含个别TCGID的列表。
应用程序411还可包含可信证书413的列表,可信证书413包含用于应用程序411 所信任的任何TE的根证书。根证书用于确定经认证的程序库是否已变更,变更的原
因是所述经认证的程序库因使用TE的公钥(其嵌入在根证书中)来证实经认证的程
序库517的数字签名而被签署。可信证书413可预先安装在计算装置401上,或可与 应用程序411 一起或在任何其它时间安装。除或替代应用程序411维持的可信证书 413,操作系统420还可维持可信证书422的存储。
当应用程序411正执行时,其可尝试启动(例如,或许使用"创建实例"调用或其 它调用)经认证的程序库417。应用程序411说明其调用的任一程序库必须是被授权 TCG列表412中的可信TCG中的一者的成员。此可在作为应用程序的启动程序一部 分的初始化时完成,或应用程序411可使用调用(例如,创建实例)而在被授权TGG 列表412(或其相关部分)中通过以加载程序库。
响应于应用程序411的请求,操作系统420定位经认证的程序库417并确定是否 批准使用应用程序411来执行所述程序库。批准确定可由操作系统420的信任管理器 424模块来执行,其从经认证的程序库417提取数字签名并确定应用程序可信证书413 中或或许全球可信证书422中是否存在对应的根证书。如果存在,那么信任管理器424 验证程序库的数字签名的真实性以确保所述程序库尚未因其被签署而变更。此验证可 包含检查远程信任实体或认证机构460以确保不取消适当的根证书。
如果所有的都得到证实,那么操作系统420加载经认证的程序库417(或其一部分) 并在应用程序的存储器空间中将其链接到应用程序411。如果根据所述方法的任一测 试失败,那么操作系统420不加载经认证的程序库417并返回错误。
在一些情况下,应用程序411可请求特定类别的功能而不必指定调用哪一特定程 序库。可存在提供所请求功能的多个程序库, 一些经认证的程序库417及一些未认证 的程序库419。在所述情况下,操作系统420仅可使应用程序411使用满足应用程序 的TCG要求的那些程序库(即,经认证的程序库417)。例如,应用程序411可再现受 DRM控制的音频内容,例如"MP3"。在所述情况下,应用程序411将可能需要信任 任何MP3解码器(程序库)不会盗用所述内容。此信任可以成员资格的形式进入特定 DRMTCG中,因此,当应用程序411需要MP3解码器程序库时,操作系统420仅使 是DRM TCG成员的MPS解码器程序库可用。
图5是操作流程图,其大体上图解说明用于确保应用程序与所述应用程序加载的 程序库之间的信任的方法500。方法500通常描述由用于建立及验证应用程序与程序 库之间的信任的系统中的各种机构执行的步骤。
在块502处,代码开发者创建程序库。所述程序库可以是既定或能够通过与执行 代码的另一模块(例如,应用程序)共享过程而以支持作用执行的任何代码模块或组 件。
在块504处,签署程序库以表示授权所述程序库包含在TCG中。包含在ICG中 暗指所述程序库被某一可信实体(例如,IE)认可且已经验证为与针对包含在TCG中的 任何要求或准则相符。在一个实施方案中,当程序库被签署时,将识别所述程序库己 签署到其中的特定群组的TCG ID明确地添加到所述程序库。在替代实施例中,TCG
证书被包含在表示程序库已签署到其中的特定TCG的经签署程序库内。TCG证书由 TE颁发或从负责TCG的TE导出其授权。以此方式,签名明确地或暗含地将程序库 绑定到TCG。
在块506处,创建并配置应用程序以使用程序库,例如在块502处创建的程序库。 所述应用程序可以是执行某一主要功能且依赖于支持所述功能或提供某一补充功能的 另一代码模块(即,程序库)的任一可执行代码。
在块508处,将被授权TCG的列表添加到应用程序,例如添加到应用程序的元 信息中。被授权TCG列表识别经加载以支持应用程序的任一程序库必须属于的那些 TCG以在应用程序的过程或存储器边界中执行。另一选择是或另外,所述应用程序可 包含表示应用程序信任而将程序库签署到TCG中的TE的可信根证书。
在块510处,将来自块508的应用程序及来自块504的程序库安装在计算装置上, 例如,手持式计算装置或智能蜂窝式电话。将了解,应用程序及程序库需要同时安装, 且可能将不同时安装,但所述两个组件最终将安装在同一装置上。
在块512处,启动应用程序并开始执行。当启动应用程序时,可视需要验证应用 程序的代码签名,以确保所述代码实际上是由代码开发者提供的,但所述验证在特性 及目的上明显不同于此文献的大部分中所述的TCG验证。
在块514处,应用程序颁发创建实例调用以加载由程序库实施的类别。将了解, 在一些情况下,可写入应用程序以调用一类别的程序库而非特定程序库。可安装多个 程序库以实施所述类别的程序库且例如,所述应用程序并不对例示的实施类别进行特 定控制。然而,在此实例中,应用程序用以创建所述类别的程序库的实例的调用起始 对来自块510的程序库的加载。
在块516处,在加载程序库之前,检查所述程序库上的签名以确定其是有效的且 链锁达到由应用程序识别为可信的根证书。在一个实施方案中,有效签名指示程序库 尚未引起被签署而变更。因此,被包含在或嵌入在程序库中的TCG ID直接识别程序 库属于的TCG。另一选择是,可从用于签署程序库的证书链确定TCG成员资格。例 如,与应用程序相关联的可信根证书可含有可信实体具有对特定TCG的签署授权的确 认(例如,根)证书。对照本地可信根证书评估与程序库相关联的TCG证书。应注意应 用程序可识别被授权以使用应用程序执行的多个TCG ID。所述多个TCG ID可仅识别 为TCGID的列表、TCG ID的范围或或许定义程序库必须属于的一个或一个以上TCG 以使用应用程序执行的布尔表达式。这些及其它替代技术对所属领域的技术人员将是 显而易见。
如果程序库上的签名确认其可信性,那么在块518处,加载所述程序库。然而, 如果程序库上的签名不能以任何方式确认,那么在块520处,不加载所述程序库。如 果在计算装置上加载多个程序库,那么可以与初始程序库相同的方式选择及评估替代 程序库。另一选择是,可发布安全提示以允许由用户或另一安全确认机构来做出信任 决定。又一替代形式是仅放弃程序库的加载并为此发布错误代码。
图6是功能框图,其大体上图解说明其中本发明的实施方案尤其适用的样本计算 装置601的核心组件。计算装置601可以是任一移动计算装置,例如蜂窝式电话、个 人数字助理、手持式"掌上型"装置、膝上型计算机、便携式音乐播放器、全球定位
卫星(GPS)装置等等。类似地,计算装置601可以是任一固定计算装置,例如桌上 型计算机或服务器。
在此实例中,计算装置601包含处理器单元604、存储器606、存储媒体613及 音频单元631。有利地,处理器单元604包含微处理器或专用处理器,例如数字信号 处理器(DSP),但在替代形式中其可以是任何常规形式的处理器、控制器、微控制器或 状态机。
处理器单元604耦合到存储器606,有利地可将所述存储器实施为保持由处理器 单元604执行的软件指令的RAM存储器。在此实施例中,存储在存储器606中的软 件指令包含操作系统610、 一个或一个以上应用程序612及一个或一个以上代码程序 库614。存储器606可以是板上RAM,或处理器单元604及存储器606可共同驻留于 ASIC中。在替代实施例中,存储器606可由固件或快闪存储器组成。
处理器单元604耦接到存储媒体613,存储媒体613可实施为任一非易失性存储 器,例如,ROM存储器、快闪存储器或磁盘驱动器(仅提出少数例子)。存储媒体 6B还可实施为那些或其它技术的任一组合,例如,磁盘驱动器与高速缓存器(RAM) 存储器或类似组合。在此特定实施例中,存储媒体613用于在切断计算装置601电源 时或在无电情况下的周期期间存储数据。
计算装置601还包含通信模块621,其能够在计算装置601与一个或一个以上其 它计算装置之间实现双向通信。通信模块621可包含能够实现RF或其它无线通信的 组件,例如,蜂窝式电话网络、蓝牙连接、无线局域网络或或许无线广域网络。另一 选择是,通信模块621可包含能够实现陆线或硬线网络通信的组件,例如,以太网连 接、RJ-ll连接、通用串行总线连接、IEEE6394 (火线)连接或类似连接。本文打算 将这些例子作为非排他性列举,且可能存在许多其它替代形式。
音频单元631是计算装置601中经配置以在模拟格式与数字格式之间转换信号的 组件。音频单元631由计算装置601用来使用扬声器632输出声音且从麦克风633接 收输入信号。
图6仅图解说明通常在多数常规计算装置中发现的某些组件。日常中,还可在特 定实施方案中发现许多其它组件,且在某些罕见情况下,可省略图6中所示的一些组 件。然而,图6中所示的计算装置601代表当今常见的装置。
虽然上文己参照特定实施例及实施方案对本发明进行描述,但应了解,这些实施 例仅为说明性且本发明的范围并不限于这些实施例。可存在对上述实施例的许多变化、 修改、添加及改进,预期这些变化、修改、添加及改进均属于如本发明权利要求书内 所祥述的本发明的范围内。
权利要求
1、一种用于确保代码模块之间的信任的方法,所述方法包括接收使用一类别的功能的应用程序,所述应用程序包含所述应用程序信任的用以实施所述类别的可信代码群组(“TCG”)列表;接收实施所述类别的功能的程序库,所述程序库是使用签名密钥签署的,所述签名将所述程序库与TCG相关联,所述TCG是可信性的认可;起始调用以致使加载所述程序库;及在加载所述程序库之前,致使验证所述程序库上的所述签名,以确定所述程序库是否是所述列出的TCG中的一者的成员。
2、 如权利要求1所述的方法,其中所述签名通过将所述程序库绑定到识别所述 TCG的TCG ID而将所述程序库与所述TCG相关联。
3、 如权利要求l所述的方法,其中使用公钥密码来签署及验证所述程序库。
4、 如权利要求3所述的方法,其中使用证书层级来进行所述签署及验证。
5、 如权利要求4所述的方法,其中致使验证所述签名进一步包括确定所述TCG 证书是否已到期。
6、 如权利要求4所述的方法,其中致使验证所述签名进一步包括确定所述TCG 证书是否已被取消。
7、 如权利要求1所述的方法,其中所述签名通过证书链将所述程序库与所述TCG 相关联,所述证书链将所述签名密钥与负责授权将程序库签署到所述TCG中的可信实 体("TE")相关联。
8、 如权利要求1所述的方法,其中致使验证所述程序库上的所述签名包括使用 与TE相关联的根证书来验证所述签名,所述根证书用于验证所述签名的真实性以及 所述TE被授权将所述程序库签署到所述TCG中。
9、 如权利要求l所述的方法,其中所述应用程序包括一个或一个以上代码模块, 所述代码模块选自包括用户应用程序、脚本、网页内容、标记内容及用户接口的群组。
10、 如权利要求l所述的方法,其中所述程序库包括一个或一个以上代码模块, 所述代码模块选自包括共享程序库、公共程序库、动态链接的程序库、静态链接的程 序库、扩展、脚本、配置、内容、用户接口及资源的群组。
11、 一种用于验证程序库的可信性的方法,其包括从应用程序接收加载所述程序库的指令,所述应用程序具有被授权的可信代码群 组(TCG)的相关联列表,每一 TCG表示与程序库群组相关联的信任等级; 检验所述程序库以检测将所述程序库与TCG相关联的数字签名; 将所述程序库的所述TCG与和所述应用程序相关联的所述被授权TCG列表相比 较,以确定所述程序库是否被授权使用所述应用程序来执行;及 如果所述程序库被授权,那么加载所述程序库。
12、 如权利要求11所述的方法,其中所述数字签名通过证书链将所述程序库与 所述TCG相关联,所述证书链将用于创建所述数字签名的签名密钥与负责授权将程序 库签署到所述TCG中的可信实体("TE")的根证书相关联。
13、 如权利要求11所述的方法,其中所述数字签名通过将所述程序库绑定到识 别特定TCG的TCG ID而将所述程序库与所述TCG相关联。
14、 如权利要求13所述的方法,其中所述TCGID包括在一整数值范围内的整数 值,所述整数值中的至少一者用于识别已针对使用所述至少一个整数值的授权进行了 评估的一群组的程序库。
15、 如权利要求11所述的方法,其进一步包括证实所述数字签名以确保所述TCG 与所述程序库的关联是真实的。
16、 如权利要求15所述的方法,其中证实所述数字签名包括使用与可信实体相 关联的根证书以确保所述数字签名是真实的。
17、 如权利要求15所述的方法,其中证实所述数字签名包括验证可信实体被授 权将所述程序库签署到所述TCG中。
18、 如权利要求11所述的方法,其进一步包括如果所述程序库未被授权,那么 不加载所述程序库。
19、 如权利要求11所述的方法,其中所述应用程序包括一个或一个以上代码模 块,所述代码模块选自包括用户应用程序、脚本、网页内容、标记内容及用户接口的 群组。
20、 如权利要求ll所述的方法,其中所述程序库包括一个或一个以上代码模块, 所述代码模块选自包括共享程序库、公共程序库、动态链接的程序库、静态链接的程 序库、扩展、脚本、配置、内容、用户接口及资源的群组。
21、 如权利要求11所述的方法,其中来自所述应用程序的所述指令包括对特定 类别的功能的请求,且进一步其中所述程序库包括提供所述特定类别的功能的一群组 的程序库中的一者,所述方法进一步包括基于所述程序库与被授权TCG相关联而从所 述群组的程序库中选择所述程序库的步骤。
22、 一种具有用于验证程序库的可信性的计算机可执行指令的计算机可读媒体, 其包括从应用程序接收加载所述程序库的指令,所述应用程序具有被授权的可信代码群 组(TCG)的相关联列表,每一 TCG表示与程序库群组相关联的信任等级;检验所述程序库以检测将所述程序库与具有所述程序库的TCG相关联的数字签名;将所述程序库的所述TCG与和所述应用程序相关联的所述被授权TCG列表相比 较,以确定所述程序库是否被授权使用所述应用程序来执行;及 如果所述程序库被授权,那么加载所述程序库。
23、 如权利要求22所述的计算机可读媒体,其中所述数字签名通过证书链将所 述程序库与所述TCG相关联,所述证书链将用于创建所述数字签名的签名密钥与负责 授权将程序库签署到所述TCG中的可信实体("TE")的根证书相关联。
24、 如权利要求22所述的计算机可读媒体,其中所述数字签名通过将所述程序 库绑定到识别特定TCG的TCG ID而将所述程序库与所述TCG相关联。
25、 如权利要求24所述的计算机可读媒体,其中所述TCGID包括在一整数值范 围内的整数值,所述整数值中的至少一者用于识别已针对使用所述至少一个整数值的 授权进行了评估的一群组的程序库。
26、 如权利要求24所述的计算机可读媒体,其进一步包括证实所述数字签名以 确保所述TCGID与所述程序库的关联是真实的。
27、 如权利要求26所述的计算机可读媒体,其中证实所述数字签名包括使用与 可信实体相关联的根证书来确保所述数字签名是真实的。
28、 如权利要求26所述的计算机可读媒体,其中证实所述数字签名包括验证可 信实体被授权将所述程序库签署到所述TCG中。
29、 如权利要求22所述的计算机可读媒体,其进一步包括如果所述程序库未被 授权,那么不加载所述程序库。
30、 如权利要求22所述的计算机可读媒体,其中所述应用程序包括一个或一个 以上代码模块,所述代码模块选自包括用户应用程序、脚本、网页内容、标记内容及 用户接口的群组。
31、 如权利要求22所述的计算机可读媒体,其中所述程序库包括一个或一个以 上代码模块,所述代码模块选自包括共享程序库、公共程序库、动态链接的程序库、 静态链接的程序库、扩展、脚本、配置、内容、用户接口及资源的群组。
32、 如权利要求22所述的计算机可读媒体,其中来自所述应用程序的所述指令 包括对特定类别的功能的请求,且进一步其中所述程序库包括提供所述特定类别的功 能的一群组的程序库中的一者,所述计算机可执行指令进一步包括基于所述程序库与 被授权TCG相关联而从所述群组的程序库中选择所述程序库。
33、 一种用于验证程序库的可信性的设备,其包括-用于从应用程序接收加载所述程序库的指令的装置,所述应用程序具有被授权的 可信代码群组(TCG)的相关联列表,每一 TCG表示与程序库群组相关联的信任等级;用于检验所述程序库以检测将所述程序库与TCG相关联的数字签名的装置;用于将所述程序库的所述TCG与和所述应用程序相关联的所述被授权TCG列表 相比较以确定所述程序库是否被授权使用所述应用程序来执行的装置;及如果所述程序库被授权那么用于加载所述程序库的装置。
34、 如权利要求33所述的设备,其进一步包括如果所述程序库未被授权,那么 不加载所述程序库。
35、 一种用于验证程序库的可信性的设备,其包括 存储媒体,其上存储有应用程序及程序库; 处理器;及存储器,其耦合到所述处理器及所述存储媒体,且其中驻留有操作以致使所述处 理器执行以下动作的计算机可执行组件从应用程序接收加载所述程序库的指令,所述应用程序具有被授权TCG的相 关联列表,每一 TCG表示与程序库群组相关联的信任等级;检验所述程序库以检测将所述程序库与TCG相关联的数字签名; 将所述程序库的所述TCG与和所述应用程序相关联的所述被授权TCG列表相 比较,以确定所述程序库是否被授权使用所述应用程序来执行;及 如果所述程序库被授权,那么加载所述程序库。
全文摘要
本发明描述用于加强应用程序与由所述应用程序加载的程序库之间的信任的技术及机构。非常概括地说,所述应用程序说明其程序库必须是被授权使用所述应用程序执行的成员的一个或一个以上可信代码群组(“TCG”)。被授权以断言一个或一个以上TCG中的成员资格的程序库包含所述成员资格的安全指示符。当所述应用程序执行并试图加载程序库时,在加载所述程序库之前验证TCG中由所述应用程序授权的程序库成员资格。
文档编号G06F21/00GK101385033SQ200780005812
公开日2009年3月11日 申请日期2007年2月23日 优先权日2006年2月23日
发明者劳伦斯·伦德布拉德, 布赖恩·哈罗德·凯利, 马修·霍尔菲尔德 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1