本发明的详细描述
计算机环境
图1和下面讨论试图提供本发明和/或其诸部分能实现的合适计算环境的简要描述。虽然不是必须,本发明在以由如客户机工作站或服务器那样的计算机执行的诸如程序模块那样的计算机可执行指令的一般情况中描述。通常,程序模块包括例行程序,程序,对象,组件,数据结构等,它们完成特定任务或实现特定的抽象数据类型。此外应该理解,本发明和/或其诸部分能用其它计算机系统配置实施,包括手持设备,多处理器系统,基于微处理器或可编程的消费品电子设备,网络PC,小型机,大型主机等。本发明还能在分布式计算环境中实施,其中任务由通过通讯网络链接的远程处理设备完成。在分布式计算环境中,程序模块能位于本地或远程的存储器存储设备中。
如图1所示,示例的通用计算系统包括传统的个人计算机120等,它们包括处理单元121,系统存储器122,和将包括系统存储器的诸多系统组件连接到处理单元121的系统总线123。系统总线123能是若干类型总线结构的任一种,包括存储器总线或存储器控制器,外围总线,和使用各种总线体系结构的任一种的局部总线。系统存储器包括只读存储器(ROM)124和随机存储器(RAM)125。包含如在起动时帮助在个人计算机120中各单元之间传输信息的基本例行程序的基本输入/输出系统126(BIOS)存储在ROM124中。
个人计算机120还包括用于读写硬盘(未示出)的硬盘驱动器127,用于读写可移动磁盘129的磁盘驱动器128,用于读写如CD-ROM或其他光介质的可移动光盘131的光盘驱动器130。硬盘驱动器127,磁盘驱动器128,和光盘驱动器130分别连接到磁盘驱动器接口132,磁盘驱动器接口133,和光盘驱动器接口134。诸驱动器和它们相关的计算机可读介质为个人计算机120提供计算机可读指令、数据结构、程序模块、和其它数据的非易失性存储。
虽然这里描述的示例环境利用硬盘,可移动磁盘129,和可移动光盘131,应理解,能存储由计算机可访问的数据的其它类型计算机可读介质也能在示例的操作环境中使用。那些其它类型介质包括盒式磁带,闪存卡,数字视频盘,Bernoulli磁带盒,随机访问存储器(RAM),只读存储器(ROM)等。
包括操作系统135,一个或多个应用程序136,其它程序模块137和程序数据138的若干程序模块能存储在硬盘,磁盘129,光盘131,ROM124或RAM125中。用户能通过如键盘140和指点设备142那样的输入设备将命令和信息输入到个人计算机120。其它输入设备(未示出)能包括麦克风,操纵杆,游戏垫,卫星式圆盘天线,扫描器等。这些和其它输入设备常常通过连接到系统总线的串口接口146连接到处理单元121,但能经由如并行口,游戏口,或通用串行总线(USB)那样的其它接口连接。监视器147或其它类型的显示设备也经过如视频适配器148那样的接口连接到系统总线123。除监视器147外,个人计算机通常包括如扬声器和打印机那样的其它外围输入设备(未示出)。图1的示例系统还包括主适配器155,小型计算机系统接口(SCSI)总线156,和连接到SCSI总线156的外部存储设备162。
个人计算机120能使用到如远程计算机149那样的一个或多个远程计算机的逻辑连接在网络环境中操作。远程计算机149能是另外的个人计算机,服务器,路由器,网络PC,对等设备或其它公共网络节点,并通常包括上面与个人计算机120相关的许多或所有单元,虽然在图1中只示出存储器设备150。图1中画出的逻辑连接包括局域网(LAN)151和广域网(WAN)152。那样的网络环境在办公室,企业范围计算机网络,内联网和因特网是常见的。
在LAN网络环境中使用时,个人计算机120通过网络接口或适配器153连接到LAN151。在WAN网络环境中使用时,个人计算机120通常包括调制解调器154或用于在如因特网的广域网152上建立通讯的其它装置。内置或外接的调制解调器154通过串行口146连接系统总线123。在网络环境中,关于个人计算机画出的程序模块或其诸部分能存储在远程存储设备中。可以理解,示出的网络连结是示例性的,可以使用在计算机之间建立通讯链路的其它装置。
对资源接收方的身份描述符
现转向图2,可以看出,本发明在下述情况表示,担当资源提供方(RP)的第一计算机类型实体10向资源接收方(RR)14提供某种类型的计算机类型资源12。可以理解,依据任何给定环境的情况,RP10和PR14的每一个能是硬件或软件实体,或能是软件实体的硬件单元或硬件实体的软件单元,这些均不脱离本发明的精神与范围。例如,RP10能是提供如资源12的数据,文件,密钥,内容等的服务器,而RR14能是需要那样资源的软件结构,数据存储设备,计算机程序等。类似地,RP10能是打印机,网络等,而RR14能是寻求资源访问那些RP10的程序或其它结构。
在本发明的实施例中,资源12具有专门值或按照预定规则处理,且因此若RR14或有关的认证者提供认证信息给RP10且RP10据此认证RR14,则RP10只提供该资源给RR14。例如,RR和认证者16能都驻留在用户的计算设备18上,其中认证者16是可信的估算器,或是在计算设备18上的某些其它实体,如在计算设备18上的加载程序或操作系统的其它部分。
在现有技术中,RR14通常包括关于RR14的信息的清单,包括的条目如:在RR14的进程中的环境描述,带有验证证书链的数字签名,能用于验证RR14的组成单元的密钥等。然而在操作中,在计算设备18上操作的单元引用关联的清单,例如来获得验证RR14的密钥,或确定RR14的进程实际上应包括某些组成单元,或获得在操作过程中必须遵循的某些过程等。
因此,RR14的清单描述RR14,RR14的安全环境,到RR14的输入等。然而那样的清单在下列方面是有缺陷的:
1,该清单能规定可被加载到单个进程的多个可执行码。虽然允许更多的灵活性,将清单限止在单个可执行码更安全,因为一个清单能与一个可执行码串接或以其它方式组合,且能根据那样的组合计算单个代码身份或‘code-ID’。可以理解,code-ID是该组合的摘要,尤其是在清单中列出的与安全有关的输入的摘要和可执行码本身的摘要。如下面更详细说明,本发明的身份描述符或‘id’是包括那些与安全有关输入的数据结构。
2,为包括多个特征该清单增大了,这导致增加了复杂性和其它不可预期的影响。相反,本发明的id能直接加入的该清单中,通过引用从其它处导入,或在运行时从该清单和/或其它处导出,这具体的导向只到对应的可执行码的上述与安全有关的输入,且具有在访问控制系统的最低层的安全相关性。因而,该id能具有相当简单的格式。
现具体转到本发明的身份描述符或id,id20是用于到进程中的可执行码的与安全有关的输入的数据包,其中该可执行码假定为图2中的RR14。可以理解,id20能嵌入到该可执行码,从单独的文件导出,或从如清单的另外文档提取。本质上,id20是规定描述可执行码/RR14(以后称RR14)操作环境,尤其是安全环境的输入变量的环境框;并能由RR14和RR14驻留的计算设备18的操作系统使用来控制那样RR14的起动和执行;还能在RP10决定是否提供资源12给那个RR14时由RP10使用。代码身份或‘code-ID’22从RR14和i d20的摘要推导或计算得出,且通常以类似于在数字签名中使用的方式是上述内容的散列值。
重要的是若RR14希望如通过阅读文件,打开调试端口等修改其安全环境,那样的RR14本身负责这样做。然而,若开发RR14的开发者希望具有参数化的特定行为,且该参数具有安全性的含意(例如根据程序输入打开不同的文件,或根据程序输入调试),则该参数能放置在id20中,且能只参考id20对该参数写RR14。因此,虽然参数在id20中能潜在地由非法的实体修改,经修改的id20将引起计算的code-ID20改变,其中那样的改变能被如RP10那样的关注方解释成RR14应不是可信的一种指示。
在本发明的实施例中,id20具有函数形式:
MAP<NameString.String>Environment Variables
即,在这里id20包括一组名字-值配对,其每一个将如加点的字符数字串那样的名字映射到对应的值串。注意,id20能以XML文档等的格式而不偏离本发明的精神和范围,尽管这种XML能不必要地引起分析的复杂性。还注意,至少某些变量能是表示成字符串的XML文档。因此,id20表示成下面形式的列表:
Name1=StringValue1
Name2=StringValue2
Name3=StringValue3
如下是id20的使用的例子。注意,例子是说明性的,不需要包罗万象。假设加点的名字空间用于“name(名字)”,“_System”,名字空间能保留为计算设备18的操作系统使用,且RR14的id20能包括其中:
_System.Debuggable=“true”
_System.ProgramName=“Excel”
_System.SealTohocalAdmin=“true”
因此,计算设备18的操作系统能参考id20以确定,对应于id20的RR14的进程是可调试的,该可执行码是命名‘Excel’,且变量_System.SealToLocalAdmin已被设置成“true”。
RR14能利用id20,根据安全性质的程序输入作出行为决策。对“name-名字”假设加点的名字空间,“MyProg”名字空间能保留为RR14所用,且RR 14的id20能包括其中:
MyProg.ProgName=“MS URT running Trusted Backup Script”
MyProg.Script=“main(){foreach(blob in blobs)print f(blob);}”
MyProg.UI=“<xml>Some UI XML</xml>”
MyProg.AllowResourceFile=“0×1234,0×3456,0×89abb”;
MyProg.KeyHolderWhoCanDebugMyProcess=“Ox fedcb”;
因此,RR14能根据id20确定以XML格式的特定程序名,程序脚本,程序UI(用户界面),若干允许的源文件,和能调试RR14的进程的特定的密钥保持器。
应该理解,在任何特定的id20中的实际名字-值的配对能是任何合适的名字-值配对而不偏离本发明的精神和范围。此外,那样的名字-值的配对能包括从RR14到RR14变化的值的类型,如特定程序脚本或有效用户的列表,并还包括对几乎所有RR14共同的值的类型,如程序名和RR14的进程是否可调试。通常在任何特定id20的名字-值配对是安全相关的,因为id20主要是规定描述操作RR14的安全环境的输入变量的环境框,虽然可以理解,与安全无关的名字-值配对也能在id20中而不偏离本发明的精神和范围。
因此,尤其谈到有关安全的事项,特定的id20能包括名字-值配对,所述名字-值配对描述:操作系统、虚拟机、真实机、和/或RR14要在其上运行的计算设备18等;RR14要在不能由调试程序等监控的隔离过程中操作,还是要在实际上能被这样监控的可调试的进程中操作;能够访问RR14的每个进入点;以及,提供给RR14的安全相关的输入等安全相关的事务。应该理解,那样的与安全相关的事务一般是影响RR14如何操作,RR14在何处得到数据和其它输入,以及RR14尤其是否能在外部能影响及监控等的事情。因此一般而言,id20中的信息描述RR14,描述操作系统和RR14在其上操作的计算设备18,并描述RR14与安全相关的方面。虽然注意到,RR14的code-ID22是部分地根据id20且code-ID22应是众知的且在下面更详细地列出,该id20应该不包括对特定的计算设备18上的对RR14的任何特定的例示是特定的名字-值的配对。
在本发明的一个实施例中,代码身份或对应于特定RR14的‘code-ID’22被定义成与id20串接的RR14的散列值。例如,散列值能基于若干已知SHA算法的任一种,包括SHA-1和SHA-256:
Code-ID22=SHA(RR14|id20)
在一个特定实施例中,Code-ID22是两个上述散列值的串接,其中一个散列值基于SHA-1,另一个基于SHA-256:
Code-ID22=SHA-1(RR14|id20)|SHA-256(RR14|id20)
因此应该理解,根据RR14和id20的知识,并还根据计算code-ID22的方法的知识,RR14和相关的认证者16能计算对应于那个RR14的code-ID22,用于以数字签名的方式呈现给RP10。重要的是,RR14的一个或多个有效的Code-ID22的每一个应是众知的,尤其应由被请求提供资源12给RR14的RP10所熟知。注意,RR14能具有多于一个有效的code-ID22,尤其在RR14以多个版本出现,能在多个操作系统上操作等情况,每个版本必需是RR14和/或id20的一个变化。因而大概是,只有在对RR14的一个有效code-ID22代表这个RR14被提交给RP10时,RP10具有RR14和对该RR14的每个有效的code-ID22的知识,且那样的RP10提供资源12给RR14。
现转到图3在本发明的一个实施例中,以下述方式使用id20和对应于RR14的code-ID22。最初,通过由用户或其它过程的激活的实例使得RR14在计算设备18的操作系统的进程中被实例化(步骤301)。通常,借助在计算设备18的操作系统运行的加载程序24达到这样的实例,虽然那样的实施可以借助任何其它合适的实体达到而不偏离本发明的精神和范围。
作为实施RR14的部分,加载程序24从存放RR14的任何什么地方获得RR14,并将其加载(步骤303)。应该理解,加载程序能以任何合适的方式获取和加载RR14而不偏离本发明的精神和范围,其中获取RR14具体方法是众知的,且在有关出版物中是公开的,因此不需在这里详述。
而且作为实例化RR14的部分,加载程序24从存放id20的任何什么地方获得与这种RR对应的id20,并将其加载到适当位置(步骤305)。如上所述,那样的id能嵌入RR14,从单独的文件导出,或从如清单那样的其它文档中提取。加载程序24能以任何速率从所述位置,以对应于那个位置的方式获取id20而不偏离本发明的精神和范围,其中获取id20的具体方法是众知的,且在有关出版物中是公开的,因而不需要在这里详述。加载程序加载id20的位置能是任何合适的位置,如列表,id高速缓存器,RR14的进程等,而不偏离本发明的精神和范围。
注意,RR14和运行RR14的计算设备18的操作系统均需要访问加载的id20。因而在加载id20时,加载程序至少为RR14提供对id20的位置的指针或其它参照(步骤307)。因此,RR14能在那个id20中找到与之相关的与安全有关的信息。此外,操作系统也能找到那样安全有关的信息,通过RR14或还通过接收那样的指针或其它引用。
最初,在RR14的操作的某点,那个RR14需要来自一个RP10的资源12,如上所述仅当对该RR14的有效code-ID22代表该RR14被提交给那个RP10时,该RP10才提供该资源12给该RR14。因而在加载RR14和与其对应的id20时,计算对应于该加载的RR14的code-ID22和id20(步骤309)。可由加载程序24或上面提到的提供认证信息给RP10的认证程序16计算那个code-ID22。可以理解,认证程序16能是加载程序24的一部分,或者加载程序24能是认证程序16的一部分。Code-ID也能以合适的方式计算而不偏离本发明的精神和范围,只要计算的code-ID22是以预期能被RP10认识的形式。
因此在RR14操作期间的某个点,那个RR14确实需要来自RP10的资源12,并因而请求认证程序16以代表该RR14获得那个资源12(步骤311)。注意,在试图获取那样的资源12前,认证程序16尤其能完成各种关于RR14的认证功能,以确保该RR14具有对资源的权利,并对该资源是可信任的,等等(步骤313)。在这样做时,认证程序16本身能查证在对应于RR14的id20中的安全有关的信息,并还能确认,该RR14未以任何方式加以修改,包括取消信任关系及其它的修改。通常,认证程序16能完成任何关于RR14的认证功能而不脱离本发明的精神和范围。那样的认证功能是众知的或在有关出版物中是公开的,因而不需要在这里详述。
假设认证程序16对RR14是满意的,则认证程序16将对资源12的请求从RR14转发到RP10(步骤315)。那样转发的请求能是来自RR14的请求的忠实拷贝或其修改。因此,该转发的请求能取任何合适的形式而不脱离本发明的精神和范围。例如,那样的形式能是预定仪的引证函数(quoting function),它包括对请求的RR14的计算的code-ID22,对请求的RR14的id20,和由RR14请求的资源12的定义及其它。应该理解,该引证函数也能根据一个或多个项包括数字签名等,其中该签名是根据在认证程序和RP10之间共享的安全密钥可验证的。
现转向图4,响应接收的引证函数或其它转发的请求,RP10决定实际上是否承诺来自RR14对资源的请求。具体说来,除其它事情外RP10验证转发的请求(步骤401),在引证函数的情况这包括根据共享的安全密钥验证其签名。此外,RP10获取code-ID22,id20,和来自转发的请求所请求资源12的定义(步骤403),从转发的请求确定请求的RR14的身份(步骤405),获取对识别的RR14的有效的code-ID22(步骤407),并验证在转发的请求中计算的code-ID22是否匹配对识别的RR14的各有效的code-ID22中的一个(步骤409)。
注意,RP10能以任何合适的方式从转发的请求确定请求的RR14的身份而不脱离本发明的精神和范围。例如,那样的身份能在转发的请求的id20中指定为具体的名字-值的配对。当然,盗用知识产权的实体能更改id20中的那些身份信息,试图从RP10不恰当地获取资源12。然而由于由认证程序16计算的code-ID22部分地根据id20,那样计算的code-ID应不能匹配RP10所知的任何有效code-ID。此外应注意,认证程序16由RP10信任而合适地工作,因而相信不会破坏code-ID22。
还注意,RP10被认为和预期具有对RR14的每个有效code-ID22。RR14的一个或多个有效code-ID22的每一个也应是众知的,尤其为请求向RR14提供资源12的RP10所知。最后注意,通过找到在转发的请求中的有效code-ID22,RP10能根据有效的code-ID22得出结论,哪个是从RR14和其i d20导出;RR14能作为可信赖的已知的未更改的RR14加以信任;而且RR14运作的安全相关信息是认为可信赖的已知未更改的与安全有关的信息。此外可以理解,通过采用code-ID22,经权衡的特定的RR14能通过从对RP10可用的code-ID移除所有相关的code-ID而不承诺提供资源。
除了使该请求的计算的code-ID22生效以外,RP10还能根据其它信息使转发的请求(步骤411)生效。例如,即使使该code-ID22生效,RP10能根据id20中的某些信息,如RR14是否在隔离的进程中运行,来编程承诺或拒绝该请求。类似地,若转发的请求包括RR14的计算设备18的用户的识别,则RP10能根据识别的用户编程来承诺或拒绝该请求。当然,RP10能根据任何准则使转发的请求生效而不脱离本发明的精神和范围。
若转发的请求如在步骤409和411那样被生效,则RP10确定,请求的资源12是可用和/或能被提供(步骤413)。例如,若资源12是数据,RP10确定,该数据实际上是否可用,或若资源是对打印机的访问,则RP10确定,该打印机是否实际上在线,有纸,能接收新的打印请求,等。
然后假设,转发的请求如步骤409和411那样被生效,且请求的资源12可用和/或能如步骤413那样被提供,则RP10通过提供请求的资源12响应转发的请求(步骤415)。因此,若资源12是一对象,RP10提供该对象,若资源12是对服务的访问,RP10如通过安全密钥或访问的其它标记安排那样的访问,并提供安全密钥或其它访问的标记。
用由RP10提供的请求的资源12的那些响应由RR14借助认证程序16直接或间接地接收(图3的步骤317),然后若响应是适当的RR14就使用提供的资源12(步骤319)。至少隐含地因为RP10实际上确实提供请求的资源12到RR14,RR14和运行它的计算设备被RP10信任用来仅以那个信任一致的方式,尤其是按照在对应于RR14的id20中列出的安全有关的信息,提供资源。
结论
本发明能对于任何资源请求方RR14和提供方RP10实施。更具体地,例如本发明能用于使PC上的文字处理程序能接收受保护的文字处理文档,使在专用播放设备处的音乐播放者能发送演播的音乐到扩音器系统,使无线设备能访问局域无线网等,因而,RR14被解释为请求资源12的任何设备,RP10被解释为在一系统中提供资源的任何设备,其中RR14根据在id20中与安全有关的信息操作,而RP10部分地根据id20使RR14的可信任性生效。
为实施结合本发明完成的进程的编程是相对直截了当的,并对相关的编程出版物是公开的。因而那样的编程不附在这里。因而能采用任何具体编程来实施本发明而不脱离其精神的范围。
在上面描述中可以看到,本发明包括新的和有用的方法和机制。借此可为计算机程序,可执行码,或其它资源接收方RR14提供如id20那样的认证信息,为RR14提供资源12的资源提供方RP10能用它来认证该RR14。Id20向RP10描述RR14的身份,并除其它事情外还包括一组描述RR14的环境的变量。
应当理解,对上述实施例能作出改变而不脱离本发明的创意。然而可以理解,本发明不限于所揭示的具体实施例,而且试图涵盖在由附后的权利要求确定的本发明的精神和范围中的修改。