具体实施方式
计算设备上的受信任者存储可手动地填充以关于受信任设备的信息,并可用来使那些受信任设备能在无需凭借由第三方证书授权机构(CA)签名的证书的开销和复杂性的情况下向计算设备认证自己。实质上,CA的功能可由用户、或计算设备上的受信任进程在判定哪些设备是受信任的以便使其信息将被置于受信任者存储中时来手动地执行。一旦位于受信任者存储中,该信息即可与从其它设备接收到的标识信息进行比较,使计算设备能够确定发送标识信息的设备是否的确是受信任的设备。
一旦设备已得到认证,它就可得到通过创建适合经认证设备的用户令牌来访问数据和计算资源的准许。与受信任设备相对应的帐户的口令可由以内核模式运行的进程改变成已知量,诸如可从存储在受信任者存储中的信息导出的标识符。一旦被改变,用户令牌就可通过登录到经认证设备来创建,由此授权它访问某些资源和数据。
对于设备的认证及其对访问***资源和数据的授权而言,现有的软件和硬件组件可被用来提供最大量的反向兼容性,并使得认证和授权功能能尽可能有效地设计。
参看附图,其中同样的参考标号表示同样的元件,本发明被说明性地描述为在诸如图1所示计算设备100的互连计算设备的环境中实现。尽管不是必需的,本发明也可在诸如程序模块的由这样的计算设备执行的计算机可执行指令的一般环境中描述。通常,程序模块包括执行具体任务或实现具体抽象数据类型的例程、程序、对象、组件、数据结构等。此外,本领域技术人员将理解,本发明可用许多不同的计算设备实践,包括手持式设备、多处理器***、基于微处理器的或可编程的消费电器、网络PC、小型计算机、大型计算机等。如上所述,本发明也可在任务由经通信网络连接的远程处理设备执行的分布式计算环境中实践。在分布式计算环境中,程序模块可置于本地和远程存储器存储设备中。
参看图1,示出了本发明可在其上实现的一示例性计算设备100。该计算设备100仅是适当计算设备的一个示例,并非旨在提出本发明用途或功能范围的任何限制。该示例性计算设备100可诸如通过存储器分区、虚拟机、多处理器或类似的编程技术实现一个或多个虚拟计算设备,从而使一个物理计算结构能执行以下所述多个计算设备所进行的动作。
本发明可在诸如程序模块的由计算机执行的计算机可执行指令的一般上下文中进行说明。一般而言,程序模块包括执行具体任务或实现具体抽象数据类型的例程、程序、对象、组件、数据结构等等。在分布式计算环境中,任务可由经通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可置于包括存储器存储装置的本地和远程计算机存储介质中。
计算机设备100的组件可包括,但不限于,处理单元120、***存储器130以及将包括***存储器在内的各种***组件耦合到处理单元120的***总线121。***总线121可能是若干总线结构类型中的任一种,包括存储器总线或存储器控制器、***总线、以及使用多种总线体系结构的任一种的本地总线。作为示例,而非限制,这些体系结构包括工业标准体系结构(ISA)总线、微信道体系结构(MCA)总线、扩展ISA(EISA)总线、视频电子标准协会(VESA)局部总线和也称为Mezzanine总线的***部件互连(PCI)总线。此外,处理单元120可包括一个或多个物理处理器或处理核心。
计算设备100通常包括各种计算机可读介质。计算机可读介质可以是能被计算设备100访问的任何可用介质,并包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现、用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性介质、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字化多功能光盘(DVD)或其它光盘存储、磁卡、磁带、磁盘存储或其它磁性存储设备、或任何其它可用于存储所需信息并可由计算设备100访问的介质。通信介质通常在诸如载波或其它传输机制的已调制数据信号中体现计算机可读指令、数据结构、程序模块、或其它数据,且包括任何信息输送介质。术语“已调制数据信号”意指在信号中用对信息编码方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直线连接的有线介质,和诸如声学、RF、红外线和其它无线介质的无线介质。以上任何介质的组合也应包括在计算机可读介质的范围中。
***存储器130包括诸如只读存储器(ROM)131和随机存取存储器(RAM)132的易失性和/或非易失性存储器形式的计算机存储介质。包含有助于如起动时在计算机110内的元件间传送信息的基本例程的基本输入/输出***(BIOS)133通常存储在ROM 131中。RAM 132通常包含可被处理单元120立即访问和/或当时正***作的数据和/或程序模块。作为示例,而非限制,图1示出了操作***134、应用程序135、其它程序模块136、和程序数据137。
计算设备100还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1图示了读取和写入不可移动、非易失性磁性介质的硬盘驱动器141,读取和写入可移动、非易失性磁盘152的磁盘驱动器151,读取和写入可移动、非易失性光盘156,诸如CD-ROM或其它光学介质的光盘驱动器155。其它也用在示例性计算环境中的可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,如磁带、闪存卡、数字化多功能盘、数字化录像带、固态RAM、固态ROM等等。硬盘驱动器141通常通过诸如接口140的不可移动存储器接口与***总线121连接,而磁盘驱动器151和光盘驱动器155通常通过诸如接口150的可移动存储器接口与***总线121连接。
如上所述并如图1所示的驱动器及其相关联的计算机存储介质为计算设备100提供计算机可读指令、数据结构、程序模块、和其它数据的存储。在图1中,例如,硬盘驱动器141被示为存储操作***144、应用程序145、其它程序模块146、和程序数据147。注意,这些组件可以与操作***134、应用程序135、其它程序模块136、和程序数据137相同或不同。在此给予操作***144、应用程序145、其它程序模块146、和程序数据147的数字不同说明他们至少是不同的副本。用户可通过如键盘162、和诸如鼠标、跟踪球或触摸板等定位装置161的输入装置向计算设备100输入命令和信息。其它输入装置(未示出)可包括话筒、操纵杆、游戏垫、***、扫描仪等等。这些和其它输入设备常常通过与***总线121耦合的用户输入接口160与处理单元120相连,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)的其它接口连接。监视器191或其它类型的显示设备也可通过诸如视频接口190的接口与***总线121相连。除了监视器,计算机还可包括诸如扬声器197和打印机196的其它***输出设备,它们通过输出***接口195相连。
计算设备100可使用与一台或多台远程计算机的逻辑连接在网络化环境中运行。图1示出与远程计算设备180的一般网络连接171。一般网络连接171和图1所示的网络连接可以是各种不同类型的网络和网络连接的任一类,包括:局域网(LAN)、广域网(WAN)、无线网络、符合以太网协议的网络、令牌环协议、或包括因特网或万维网的其它逻辑、物理或无线网络。
当用于网络化环境中时,计算设备100通过网络接口或适配器170与一般网络连接171相连,该网络接口或适配器170可以是有线或无线网络接口卡、调制解调器、或类似的网络设备。在网络化环境中,相关于计算设备100所述的程序模块或其一部分可存储在远程存储器存储设备中。可以理解,所示网络连接是示例性的,并可使用在计算机之间建立通信链接的其它手段。
在以下的描述中,本发明将参照由一个或多个计算设备执行的动作和操作的符号表示进行描述,除非另有指明。这样,可以理解,有时称为计算机正在执行的这些动作和操作包括由计算设备的处理单元对以结构化形式表示数据的电信号的操纵。该操纵转换数据或将其保存在计算设备的存储器***中的单元内,以本领域技术人员能很好理解的方式重新配置或以其它方式改变计算设备的操作。维护数据的数据结构是存储器中其具体属性根据数据的格式定义的物理单元。然而,尽管本发明在前述上下文中进行描述但这并不表示是限制性的,因为本领域技术人员将理解以下描述的各种动作和操作也可用硬件来实现。
参看图2,示出了计算设备201和计算设备202之间的一系列通信。计算设备201和计算设备202可以是与以上详细描述的计算设备100类型相同的计算设备,或者它们可以是任一种以上列示的其它类型计算设备,包括但不限于手持式计算设备、膝上型计算设备、大型计算设备、任务专用计算设备等。如图2所示,就没有计算设备用作设计成为多客户机网络的集线器的专用服务器而言,计算设备201和202是“对等设备”。相反,计算设备201和202有可能包括类似的计算能力,并有可能直接由一个或多个用户使用。然而,如对本领域技术人员显而易见的,对等计算设备无需为了用作对等设备而在计算上也相似。
对等网络通信连接可在计算设备201和计算设备202之间形成。图2示出称为“传输层安全”(TLS)协议的通用安全协议。尽管以下的描述将集中于TLS协议,但本发明并不限于这样的协议,并且如本领域技术人员所知,许多其它协议可分别向计算设备201和202提供足以使该计算设备201和202能执行本发明各实施例所构想的认证机制的信息。
如图2所示,TLS协议由一个对等设备(在本示例中为计算设备201)发起,从而向另一对等设备发送一个或多个包括ClientHello结构的发起消息210。ClientHello结构可包括当前时间、随机值、设备201所支持的密码算法列表、以及设备201所支持的压缩算法列表等。为了描述图2中所示的通信,术语“客户机”和“服务器”将像它们被TLS协议使用一样使用;即“客户机”是发起通信的计算设备,而“服务器”是对其发起通信的计算设备。此外,如本领域技术人员所众所周知的,尽管包括ClientHello结构的消息210被示为是发起消息,但图2中所示的通信可等同地由来自计算设备202对计算设备201向计算设备202发送ClientHello结构的请求发起。在该情形中,来自计算设备202的请求将由包括上述ClientHello结构的消息210响应。
响应于消息210,计算设备202可发送包括ServerHello结构、设备202的证书或证书链、ServerKeyExchange结构、CertificateRequest结构以及ServerHelloDone消息的消息212。ServerHello结构可包括随机值(与ClientHello中的随机值不同)、会话标识符、从ClientHello提供的列表中选择的选定密码算法、以及从ClientHello提供的列表中选择的选定压缩算法等。如以下更详细地描述地,设备202的证书可包括适于ServerHello结构中指定的选定密码算法的证书或证书链。ServerKeyExchange结构可包括诸如公钥的信息,该信息可由计算设备201用来保护前主(premaster)机密的通信或完成能得到前主机密的密钥交换。如果证书或证书链包含能足以允许计算设备201交换前主机密的信息,则消息212无须包含ServerKeyExchange结构。CertificateRequest结构可包括计算设备201提供其证书的请求,并可进一步包括所请求的证书类型的列表和可接受证书授权机构的列表。并且ServerHelloDone消息可指示已完成对作为消息212发送的以上所述信息的传输。
响应于消息212,计算设备201可使用经由消息212接收的证书或证书链来通过参考存储在受信任者存储203或受信任根存储205的证书认证计算设备202。更具体地,如以下更详细地描述地,计算设备201可将经由消息212接收的证书或证书链与存储在受信任者存储203中或链接回受信任根存储205中的证书作比较。如果计算设备202被认证,则计算设备201可发送消息214,包括计算设备201的证书或证书链、ClientKeyExchange结构、CertificateVerify结构、ChangeCipherSpec消息以及Finished消息。如以下更详细地描述地,设备201的证书可包括适于在消息212的ServerHello结构中指定的选定密码算法的证书或证书链。ClientKeyExchange结构可包括前主机密的经加密版本、或足以使计算设备201和202独立导出相同前主机密的信息。CertificateVerify结构提供对设备201的证书的显式验证。ChangeCipherSpec消息指示计算设备201已采用商定的加密算法,并将以商定的密钥使用这些算法来发送后续消息,该后续消息如上所述是Finished消息,指示已完成了消息214中所包含信息的传输。
当在消息214中接收到来自设备201的证书或证书链之后,计算设备202可通过将在以下更详细描述的方式参考存储在受信任根存储206或受信任者存储204中的证书来使用该证书或证书链以认证计算设备201。如果计算设备201得到认证,则设备202可确认作为消息214的一部分发送的Finished消息,以确保正在使用适当的加密算法和加密密钥。计算设备202随后可发送消息214,该消息包括对设备202将使用商定的加密算法和密钥来对后续通信加密的指示,以及如所指示地加密的Finished消息。
如果计算设备201可正确地解码作为消息214的一部分发送的Finished消息,则它可验证设备202正在使用正确的加密算法和密钥。因为设备201和202均已向彼此认证了自己,并且建立了一公共的加密算法和密钥组,所以它们可继续以安全方式交换数据220。
如上所述,通常因为证书由证书授权结构(CA)签名,所以证书认证一计算设备。在一公知机制中,CA将通过使用CA的私钥对诸如来自证书本身的数据的某数据加密来签名证书。如本领域技术人员所知的,私钥由单个实体秘密保存、并用来加密可通过相应公钥解密的信息。因为私钥不能从公钥中导出,所以公钥可广泛地分发。因而,如果计算设备知道CA的公钥,并且如果它能正确地对证书中的加密数据解码,则计算设备可确定CA签名了该证书。此外,如果计算设备“信任”该CA,则计算设备可将信任延及提供经签名证书的设备,并且由此认证该设备。
传统的CA包括其业务是验证信息和签名证书、以及对于内部网络而言包括信息技术(IT)部门的公司。例如,在由公司IT部门维护并保护的公司网络中,IT部门可用作CA并可对公司员工的证书签名以表示他们可被其他员工所信任。然而,这样的CA将仅对公司内部通信有用。如果员工需要与公司外部的计算设备相连,则有可能外部设备不会将该公司的IT部门视为受信任授权机构、因此不会基于该公司的IT部门所签名的证书认证该员工。在这种情形中,可使用诸如其业务是验证信息的第三方CA。例如,第三方公司可用作独立的CA,且想要提供该CA签名的证书的任何人都需要提交各种信息使该公司可在签名请求者的证书之前验证该请求者的身份和合法性。如果公司在对证书签名之前已勤勉地验证了信息,则它可形成作为可信任CA的信誉,并可用来使来自不同环境(诸如不同的公司实体)的两个或多个计算设备来彼此认证。
来自CA的证书被称为是“自签名的”,因为该证书内所包含的经加密信息通过CA自己的私钥来加密。这种来自CA的自签名证书被称为“根”证书,并以可信任的方式向一个或多个计算设备传递。例如,在上述公司情形中,使公司IT部门能用作CA的根证书可由IT部门预先安装在每台计算设备上,或者可由IT部门的员工使用便携式存储介质手动安装。在该情形中,当公司的计算设备之一想要与另一计算设备相连时,它可提交由公司的IT部门签名的证书。该另一设备可验证证书,因为对经加密信息解密并由此验证证书所需的公钥已作为根证书的一部分存在于该设备上。类似地,独立第三方CA的根证书可由制造商预先安装在计算设备上,或可与来自个人用户可信任的源的软件捆绑在一起,这些软件诸如来自著名软件公司或组织的web浏览器或文件传送程序。在这些情形中,如果一个计算设备向另一个计算设备提交由已知第三方CA签名的证书,则该另一计算设备可验证该证书并认证第一计算设备,因为:第三方CA的自签名证书被预先安装并由此向另一计算设备提供CA的公钥,并且使其能验证经加密信息是使用CA的私钥加密的并由此认证提交设备。
不幸的是,如上所述,独立第三方CA常常要求签名证书的报酬,从而使得个人、小组织、教育机构、慈善团体等使用这样的CA变得不切实际。例如,一个小型天文俱乐部可能想要使其成员能通过由对等连接构成的网络共享其数字天文照片,从而使该俱乐部能不必购买专用服务器计算设备而节约费用。类似地,个人可能想要建立对等网络以便于与朋友玩游戏或共享文件。在任一情形中,都需要一种不基于昂贵的第三方CA而认证想要建立这样的对等连接的计算设备的机制。
参看图3,示出了根据本发明一实施例的一种用于认证设备的机制。通常,如上所述,CA的根证书可通过一些受信任手段预先存储在计算设备上。这些证书标识CA及其公钥,并且使用相应的私钥来自签名。当存储在设备上时,根证书可被存储在可称作“受信任根存储”的一个公共位置。如本领域技术人员将认识到的,诸如图2所示的受信任根存储205和受信任根存储206的受信任根存储不必是一特定文件夹或类似的文件***实体,而可以不论其在给定计算设备的文件***内的位置仅仅指根证书的概念化集合。
因而,如图3所示,为了根据本发明一实施例认证一连接设备,接收设备首先可如步骤301所示接收证书。随后,在步骤303,接收设备可尝试确定它所接收到的证书是否由其证书被存储在受信任根存储中的CA签名。通常,连接设备将提供一证书链,其中它自己的证书为该链的第一个证书。该第一证书可包含一加密部分,该加密部分可使用在证书链中的后续证书中指定的公钥来解密。因为只有有私钥的处理器可制作该加密部分,所以第一证书的该加密部分用作与第二证书相对应的实体对第一证书的验证。用这种方式,每个证书由证书链中后来的证书来确认。然而,最终,除非该链以由其证书存储在受信任根存储内的CA签名的证书结束,否则接收计算设备不会认证该连接设备。
因而,在步骤303,接收设备首先可确定由连接设备发送的证书是否由该接收设备所信任的CA认证。如上所述,如果CA的证书被存储在客户机的受信任根存储中,则该CA被该客户机信任。同样如上所述,当证书包括仅能通过由CA证书指定的公钥解密的加密数据,从而因为只有该CA能访问它自己的私钥而指示该加密数据是由CA加密时,该证书可被确定为被该CA认证。如果发送了证书链,则接收设备可在步骤303确定该链中的最后一个证书是否被该接收设备所信任的CA认证。
如果证书被接收设备所信任的CA认证,则接收设备接着可确定该证书是否对应于连接设备,如步骤307所示。如果证书仅仅是证书链中的最后一个证书,则它将不标识连接设备。然而,如果连接设备仅发送单个证书,则该证书不仅应被接收设备所信任的CA认证,而且还应当正确地标识连接设备。如果它的确做了这两件事,则接收设备可准许该连接,如图3中的步骤317所示。
然而,如果连接设备仅发送了一个证书,并且它不标识连接设备,则接收设备将在步骤307确定该证书不标识连接设备,并且在步骤309确定该链中没有其它证书,因此将如步骤315所示拒绝连接设备所尝试的连接。如果证书链不以标识连接设备的证书开始,则接收设备将类似地拒绝连接。
如果在步骤309接收设备确定其最后一个证书被受信任CA认证的证书链中有其它证书,则接收设备可在步骤311检查前一个证书,并如步骤313所示地确定前一个证书是否由后一个证书证明。如本领域技术人员所公知的,如果证书链中的每个证书都不证明前一个证书则信任关系将断裂,并且该证书链不能证明发送它的设备。因此,如果在步骤313接收设备确定证书链中有一裂口,则它可在如图所示的步骤315拒绝连接。但是,如果现在所检查的证书被后一个证书所证明,则接收设备回到步骤307,以确定现在所检查的证书是否标识了连接设备。如上所述,如果是,则接收设备可认证发送设备并在步骤317准许连接,而如果不是,则接收设备可检查该链中的其它证书,如同样如上所述的步骤309所示。
然而,如上所述,要求不同的对等网络情形中的各个设备提交由第三方CA签名的证书会是不切实际的。因此,可使用本发明一实施例所构想的“受信任者存储”以及受信任根存储。类似于受信任根存储,受信任者存储可由来自给定计算设备上特定用户所信任的实体的证书填充。然而,与受信任根存储不同,其证书位于受信任者存储中的实体将不被允许用作该用户的CA。如以上参照受信任根存储所述,受信任者存储不必指计算设备的文件***的具体片段或要素,而是相反指被视为受信任者存储的一部分的所有证书的概念性集合,不管它们驻留在文件***内的什么地方。
受信任根存储与受信任者存储之间的另一个不同之处在于受信任者存储可由个人用户更容易地填充。因为使个人用户能选择信任谁可减少可能的安全措施,所以任何的风险增长都可通过将受信任者存储的适用性仅仅限制于一开始选择放置哪些证书的用户来补偿。
用户可通过各种机制来接收证书,并可个别确定是否要信任那些证书。例如,两个朋友可通过电话或亲自交谈来同意通过电子邮件互相发送其证书,以使他们的计算机能形成对等连接。如果这两个朋友之一随后接收到声称来自对方的包括一个证书的一封电子邮件,则存在接收者可选择将该证书添加到其受信任者存储的充分可信任标记。或者,可信任证书可在频带外接收,诸如通过物理地在便携式计算机可读介质上携带证书并将其复制到计算设备中,或通过包裹递送服务发送便携式计算机可读介质上的证书。
一旦计算设备上的受信任者存储包括受信任实体的证书,该实体就可在无需首先获得第三方CA签名的证书的情况下形成与该计算设备的对等连接。具体地,如果实体的证书位于受信任者存储中,则该证书可被用来认证该实体。例如,如果发送计算设备已在接收计算设备的受信任者存储中具有标识它自己的自签名证书,则该发送计算设备可通过提供自签名证书来获得认证。如以上详细所述,这样的自签名证书包括有关发送设备的信息,并包括通过发送设备的私钥加密的加密信息。因为发送设备的自证书已位于受信任者存储中,所以接收设备可使用受信任者存储中的证书所提供的公钥,并可对作为发送设备所发送的自签名证书的一部分的加密信息解密,由此可确定该自签名证书确实是通过发送设备的私钥签名的,由此认证该发送设备。
作为另一示例,发送计算设备可在接收计算设备的受信任者存储中存储标识它自己的第三方签名证书。在这样的情形中,发送计算设备可以与以上详细描述相似的方式通过提供该第三方签名证书来获得认证。这样的安排增加了在不需要用户接受第三方签名的任一证书的情况下允许用户用第三方签名证书填充其受信任者存储的益处(与仅将第三方加入受信任根存储的情况相同)。因此,可以看出,存储在受信任者存储中的证书仅需标识一实体,并且基于本发明不存在这些证书应为自签名证书的要求。
再参看图3,如果在步骤303接收设备确定所接收的证书或证书链没有经其证书位于受信任根存储内任何CA签名,则在步骤305它可检查该受信任者存储。因而,如果那些设备之一想要发送例如自签名证书以尝试与接收设备形成对等网络,则自签名证书将足以认证它,因为该设备的证书位于受信任者存储中,且该设备本身可用作该设备的CA。以这种方式,想要形成对等连接的设备不会造成其证书由第三方CA签名的开支和低效。
如以上详细所述地,并如图3的步骤307-313所示,连接设备可发送一证书链以向接收设备认证它自己。这样的证书链在它具有作为根证书的分组证书时同样有效,如以下可看到地该分组证书可使个人能创建一分组的单个证书,从而简化小型组织、俱乐部、慈善团体等中各实体之间的对等连接。例如,返回到以上想要在其部分成员之间建立对等网络以便于图像共享的天文俱乐部的假设,成员之一可创建类似于如上所详述的自签名证书的一分组证书,然后使其他成员接受该分组证书。具体地,当其他成员各自“接受”分组证书时,他们表示他们愿意认证该组中的任一个成员。因此,分组证书可以类似于如上详述的根证书的方式发挥作用。然而,为了避免将分组证书添加到受信任根存储或受信任者存储时所伴随的安全问题,本发明一实施例所构想的一种机制可将分组证书保存在它自己的存储中,并在需要时向认证进程提供该证书。因此,认证进程可如上所述地进行,并可将该分组证书视为根证书。例如,对于分组中要与任一其它成员形成对等连接的任一个成员而言,每个成员可简单地向其它成员提交他们的由分组证书签名的证书。因为分组证书被视为根证书,所以由分组证书签名的证书足以认证发送成员。但是,由于分组证书实际上并不存在于根存储或受信任者存储中,所以对该分组成员的认证可在个人基础上进行,这可通过向认证进程提供分组证书的机制来控制。
此外,不能与分组创建者接触的其它成员可简单地请有权签发证书的其它参与组员之一(诸如管理员)来对其证书签名。当那些成员想要形成对等连接时,他们可提交包括其证书和另一成员的证书的证书链,其中他们的证书由另一成员的证书签名,而该另一成员的证书通过分组证书来签名。如图3所示,如果在步骤301接收设备接收这样的一个证书链,则它可确定该链中的最后一个证书是否由用作根证书的分组证书签名,如步骤303所示。如果是,则接收设备可如步骤307-313所示的迭代整条链,从而确保每个证书由下一个证书签名,并且该链中的第一个证书标识想要进行对等连接的设备。在以上示例中,这样的一个进程将揭示该链中的最后一个证书,即另一成员的证书由可用作CA的分组证书签名,并且加入成员的证书由另一成员签名,由此完成该链并认证加入成员。
如上所述,作为诸如前面详述的TLS算法的各种算法的一部分,证书或证书链交换。因此,本发明一实施例所构想的机制可通过发挥诸如TLS的算法的能力以及简单地***其它机制以在交换了证书之后执行上述步骤来有效地实现。因为这样的***会影响诸如基于存储在受信任存储中的CA来认证设备的TLS的算法的要素,所以本发明一实施例所构想的其它机制可执行此类认证,诸如图3中的步骤303所示。或者,本发明一实施例所构想的机制可排他性地集中在对提交证书或证书链最终基于存储在受信任者存储中的CA得到认证的实体的认证上。
参看图4,上述机制的一种可能实现可通过动态链接库(DLL)或类似组件,诸如图4所示的peerssp.dll 403。该peerssp.dll 403可提供一安全服务供应商(SSP)接口405,该接口405使应用程序能访问peerssp.dll 403的能力,包括例如通过参考受信任根存储、受信任者存储或分组证书来认证对等连接中各实体的能力。
一旦两个或多个设备通过对等网络连接,这些设备之一就可设法访问另一设备的受信任资源。在这样的情形中,提供受信任资源的设备可通过确定请求设备是否获得访问它的授权,来确定是否准许请求设备的访问。一般而言,在对等连接环境之外,如果用户具有允许用户访问计算设备资源的帐户,则该用户获得访问这些资源的授权。这样的帐户许可可在用户在计算设备上登录其帐户时由该计算设备的操作***的本地***授权机构(LSA)组件所生成的令牌中得到反映。通常,用户通过向LSA提供用户名和口令来登录到其帐户中。如果用户名和口令与分配给特定帐户的用户名和口令相匹配,则用户通过LSA登录到该帐户中并生成一适当令牌。
然后当用户想要访问-受信任资源时,将准许用户访问资源的操作***或其它进程可首先检查用户的令牌,以确定该用户是否获得访问受信任资源的授权。如果用户获得授权,则操作***或其它进程将对用户的请求作出响应。更具体地,访问资源的用户请求通常通过诸如图4所示应用程序401的应用程序作出。应用程序401可在用户的指示下通过使用“打开文件”命令或类似命令、将该受信任资源指定为请求的一个参数来设法访问受信任资源。将准许访问资源的操作***或其它进程可在检查用户的令牌之后确定是否要准许用户访问资源。如果用户获得授权,则操作***或其它进程可用成功指示符作出响应。在接收到该指示符时,应用程序401然后可发出“发送字节”或类似的请求以实际接收受信任资源的内容,以便于处理它们并向用户提供这样的信息。然而,如果用户未获授权,则操作***或其它进程可用失败指示符作出响应,该失败指示符可以对话框或类似通知的形式由应用程序401呈现给用户。
对等网络中的用户可通过类似手段得到访问远程计算设备上受信任资源的准许。具体地,在对等网络上通信的应用程序可使在所访问计算设备上运行的一远程进程模拟访问用户。然而,为了在所访问的计算设备上生成该访问用户的令牌,可允许访问用户登录到该计算设备上。为了避免在每个计算设备上手动地创建每个用户的帐户,本发明的各个实施例构想一种自动化机制,通过这种自动化机制用户可在不手动创建一帐户的情况下登录。
参看图5,示出了本发明一实施例所构想的使用户自动登录到远程计算设备上的一种机制。如图所示,在步骤501用户的信息可用如上详述的方式添加到受信任用户存储。一旦用户已被添加到受信任用户存储,就可在其受信任用户存储中添加了该用户的计算设备上为该用户创建帐户,如步骤503所示。随后,在请求设备上工作的用户与主机设备形成对等连接之后,用户可请求诸如受信任资源的要求认证的资源,如步骤505所示。
为了在主机设备上模拟该用户,以便于确定是否要准许用户对所请求资源的访问,本发明一实施例所构想的一个或多个进程可通过使用在步骤503创建的帐户和进程可改成一已知值的口令使远程用户登录到主机设备而使针对该远程用户的令牌得以创建。因为执行模拟的一个或多个进程可作为本地***进程执行,所以它们可改变在步骤503创建的帐户的口令。具体地,口令可被改成可由模拟用户的一个或多个进程自动确定的值,诸如远程用户的证书内所包含的部分或全部信息的散列。因而,如步骤507所示,在远程用户在步骤505请求受信任资源之后,在主机计算设备上模拟远程用户的一个或多个进程可将用户帐户的口令改成一已知值,然后可通过使用新选择口令登录到用户帐户而在步骤509创建用户令牌。在一些操作***中,不改变与远程用户的帐户相对应的口令,模拟远程用户的一个或多个进程而是在用户登录时仅指定诸如证书散列的一不同类口令,而非诸如Kerberos口令的更常规口令。
一旦创建了用户令牌,就可尝试以类似于以上详述的方式访问受信任资源。具体地,在主机计算设备上模拟远程用户的一个或多个进程可使用“打开文件”命令使控制访问受信任资源的操作***或其它进程检查用户的令牌,以确定用户是否获得访问受信任资源的授权。如果用户未获得访问受信任资源的授权,则控制访问受信任投资源的操作***或其它进程可向模拟远程用户的一个或多个进程返回一失败指示符,并且所指示的失败可经由对等连接转发给请求设备上的一个或多个进程,从而可向用户通知失败。然而,如果用户获得了访问受信任资源的授权,则控制访问受信任投资源的操作***或其它进程可向模拟远程用户的一个或多个进程返回一成功指示符,基于该成功指示符一个或多个模拟进程可使用“发送字节”命令来请求包含在受信任资源内的数据。然而,代替在主机计算设备上消费数据,作为“发送字节”命令的结果接收的数据可简单地经由对等连接转发给远程计算设备,在该远程计算设备中一个或多个本地进程可消费该数据并将其呈现给用户。
返回到图4,诸如peerssp.dll 403的单个DLL可提供上述模拟功能中的大多数。例如,除远程设备上的之外的诸如应用程序401的应用程序可请求通过调用在应用程序的进程空间内实例化的、由远程设备上诸如peerssp.dll 403的DLL展现的适当功能来访问主机设备上的受信任资源。该请求可被转发给主机设备上的DLL,诸如图4所示的peerssp.dll 403,该DLL可在主机设备上模拟远程用户。由于令牌的生成可以是一个享有高度特权的进程,因此peerssp.dll 403可与具有更高特权的组件通信,诸如认证服务411。因而,在模拟远程用户时,诸如peerssp.dll 403的进程可经由远程过程调用407传递必要的凭证,以使用户登录到高特权的认证服务411。如果用户登录成功,则高特权的认证服务411可经由相似的远程过程调用机制将结果所得的令牌返回给诸如peerssp.dll的一用户模式进程。
一些现代的操作***允许多个用户同时登录到计算设备上。在这种情形中,一个用户可将对等计算设备的证书添加到其受信任者存储中,而其它用户则不作添加。本发明一实施例所构想的机制允许进行确定哪个用户目前正在访问计算设备资源的检查,并将该用户的受信任者存储用作认证远程设备的基础。
如可见,本发明的各个实施例构想可在用户控制之下填充的受信任者存储,并能使对等设备在不需要最终由第三方CA签名的证书或证书链的情况下得到认证。此外,本发明的各个实施例构想了在主机计算设备上模拟远程用户,以发挥用于确定远程用户是否获得访问受信任资源的授权的现有机制的作用。尽管以上详细描述是基于特定算法的,但本发明没有任何东西是仅基于那些算法而排除其它相似算法的。例如,尽管上述证书是使用公钥/私钥密码术签名的,但通过任何适当密码算法保护的任何证书同样适用于本发明。类似地,尽管以上详细描述引用了单个DLL模块,但本发明的各个实施例可用库、例程、子例程、操作***进程、或任何其它可编程结构的任何组合来实现。
考虑到本发明原理可应用的许多可能实施例,应当认识到本文中参考附图描述的实施例仅仅意在是说明性的,而不应被视为限制本发明的范围。例如,本领域技术人员将认识到,例示实施例中以软件示出的一些要素可用硬件实现,反之亦然,或者可在配置和细节上对例示实施例作修改而不背离本发明的精神。因此,本文中所述的本发明构想了落入所附权利要求及其等效方案的范围内的所有这些实施例。