代码签署服务的制作方法

文档序号:14652028发布日期:2018-06-08 22:01阅读:150来源:国知局
代码签署服务的制作方法

生产计算机软件的公司和其他组织(“软件实现者”或简称“实现者”)将加密签名应用于它们的软件代码是很常见的。那些接收到以此方式签署的代码的人可验证签名,并通过这样做来确认(1)实现者是代码的来源,并且(2)代码从脱离实现者的控制开始就没有变化,并且因此该代码未被操纵以产生不正确的结果,危及运行其的计算机系统的安全性等。在一些情况下,计算机系统被配置为仅安装已由可信组织列表中的实现者验证签名的代码。

用于此目的的加密签名通常涉及为实现者生成的非对称密钥对。密钥对包括实现者用于产生加密签名并保护秘密的私钥,以及代表实现者发布以使其他人能够验证据称由该实现者作出的签名的对应公钥。

概述

提供本概述以便以简化的形式介绍将在以下的详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键因素或必要特征,也不旨在用于限定所要求保护的主题的范围。

用于在代码签署中登记软件实现者的设施。在一个示例设施中,该设施接收标识实现者的信息以及认证实现者的证书。该设施为实现者生成秘密状态。基于(1)接收到的证书的至少一部分和(2)所生成的秘密状态的至少一部分中的一者或两者,该设施为实现者生成包括私钥和公钥的密钥对,并持久地存储秘密状态。

附图简述

图1是示出在一些示例中该设施在其中操作的样本环境的网络示图。

图2是示出可被包含在该设施在其上操作的计算系统和其他设备中的至少一些中的一些组件的框图。

图3是示出在一些示例中根据设施执行以注册新实现者的样本交互的数据流图。

图4是示出在一些示例中可由设施执行以处理实现者注册请求的示例动作的流程图。

图5是示出在一些示例中设施所使用以存储关于每个已注册的软件实现者的信息的实现者表格的样本内容的表格图。

图6是示出在一些示例中根据设施执行以代表实现者查找代码的交互的数据流图。

图7是示出在一些示例中可由设施执行以处理代码签署请求的示例动作的流程图。

图8是示出在一些示例中根据设施向实现者的顾客和其他人提供对实现者公钥的访问的样本交互的数据流图。

图9是示出在一些示例中可由设施执行以返回所请求的实现者公钥的示例动作的流程图。

图10是示出在一些实施例中根据设施执行以更改或“滚动(roll)”实现者的密钥对的样本交互的数据流图。

图11是示出在一些示例中可由设施执行以处理密钥滚动请求的示例动作的流程图。

图12是示出在一些示例中在响应于实现者的密钥滚动请求而被更新之后设施所使用的实现者表格的样本内容的表格图。

图13是示出在一些示例中可由设施的附加示例执行以处理实现者注册请求的示例动作的流程图。

图14是示出在一些示例中设施的附加示例所使用以存储关于每个已注册的软件实现者的信息的实现者表格的样本内容的表格图。

图15是示出在一些示例中可由设施的附加示例执行以处理代码签署请求的示例动作的流程图。

详细描述

发明人已标识出了使用常规方式签署代码的显著缺点。具体而言,发明人已认识到,通过使每个实现者组织对其自己的私钥负责,常规方式向每个组织施加显著的时间和/或成本负担以便以确保私钥的未来可用性的方式存储其私钥;并适当地且有效地控制对密钥的访问及其签署代码的用途以使密钥不被用于签署未授权的代码。

为了克服这些缺点,发明人已设想并简化以实施一种提供用于代表实现者组织签署代码的在线服务的软件和/或硬件设施(“该设施”)。该设施管理每个实现者的密钥,并且使各实现者不必这样做。

在一些示例中,针对多个实现者中的每一个,设施部分地基于实现者所提供的证书并还部分地基于设施为实现者维护的秘密状态来为实现者生成密钥对。在各种示例中,设施使用各种类型的证书,包括基于在oauth.net中描述的OAuth认证和授权协议的证书。在一些示例中,该设施安全地至少存储该密钥对的私钥以供稍后用于代表实现者签署代码;在一些此类示例中,被设施使用的密钥生成过程包括随机元素从而具有不确定性。在一些示例中,设施省略了存储实现者的私钥;相反,它使用确定性的密钥生成过程,并在每次需要私钥来代表实现者签署代码时根据实现者的证书和实现者的秘密状态重新生成私钥。在一些示例中,设施采取步骤来发布每个实现者的公钥,诸如通过将公钥传送到公钥储存库或注册者(registrar)(该公钥储存库或注册者对未认证的请求做出响应来检索实现者的公钥),操作其自己的公钥储存库等等。

在一些示例中,设施从实现者接收其证书以及将被签署的代码表示。在各种示例中,此代码表示是(1)将被分发的整个代码主体;(2)表征将被分发的代码主体的目录,诸如通过在存在于一个或多个应用或其他软件单元中的各个文件中包括摘要的集合;(3)为将被分发的代码主体生成的一个或多个摘要;或(4)可以基于将被分发的代码主体确定性地或半确定性地生成的另一种类型的表示。该设施使用为实现者存储或重新生成的私钥来签署代码表示,并将经签署的表示或签名单独返回给实现者。在除上文(1)以外的方式中,设施在无需访问代码主体本身的情况下进行操作,这可能会被一些实现者视为安全优势。

在一些示例中,实现者可指示设施“滚动”其密钥对,即,用新密钥对替换其密钥对。在设施从实现者接收到此类指示的情况下,其为实现者改变其秘密状态;为该实现者生成新密钥对;发布新密钥对的公钥;并在其持久地存储每个实现者的私钥而不是在需要时重新生成私钥的示例中,存储新密钥对的私钥。在一些示例中,设施自动地(诸如周期性地)滚动一些或全部实现者的密钥。

在各种示例中,设施签署伴随代码的数据;虽然与代码分开,但与代码有关的数据;和/或与代码无关的数据。例如,在一些示例中,设施签署代码完整性策略文件,该代码完整性策略文件构成其软件被授权在计算机系统上执行的经批准的软件发布者的清单。

在一些示例中,设施执行作为签署的一部分和/或与签署分开的时间戳。在一些示例中,设施对撤销密钥对的实现者请求作出响应。在一些示例中,设施维护审计日志,单独地或与实现者可能使用以确定已代表实现者提交了什么代码表示或其他有效载荷并使用其私钥进行签署的接口一起。

通过以上文描述的方式中的一些或全部来执行,该设施使实现者能够享受代码签署的益处,而无需自行维护私钥存储和代码签署基础结构。

图1是示出在一些示例中设施在其中操作的样本环境的网络示图。代码签署服务服务器100由实现者客户端计算机系统120和顾客客户端计算机系统130两者经由因特网110访问。在各种示例中,代码签署服务中心注册使用实现者客户端的实现者(参见图3-5);代表使用实现者客户端的实现者签署代码(参见图6-7);向使用顾客客户端的顾客提供实现者公钥(参见图8-9);以及响应来自使用实现者客户端的实现者的请求来更改或“滚动”实现者的密钥对(参见图10-12)。

虽然按照上文所描述的环境描述了各种示例,但是本领域技术人员将理解,该设施可在各种其他环境中被实现,包括单个单片式计算机系统以及以各种方式连接的计算机系统或类似设备的各种其他组合。在各种示例中,各种计算系统或其他不同的客户端设备可被代替诸如移动电话、个人数字助理、电视、相机等web客户端计算机系统使用。

图2是示出可被包含在用于该设施在其上操作的计算系统和其他设备中的至少一些中的一些组件的框图。在各示例中,这些计算机系统和其他设备200可包括服务器计算机系统、台式计算机系统、膝上型计算机系统、平板计算机系统、上网本、移动电话、个人数字助理、电视机、相机、汽车计算机、电子媒体播放器、电子广告亭设备、电子表格设备、电子白板设备等。在各种示例中,计算机系统和设备包括以下各项中的零个或多个:用于执行计算机程序的中央处理单元(“CPU”)201;用于在其被使用时存储程序和数据的计算机存储器202,该计算机存储器包括设施和相关联的数据,包括内核的操作系统以及设备驱动器;诸如用于持久存储程序和数据的硬盘驱动器或闪存驱动器之类的持久存储设备203;用于读取存储在计算机可读介质上的程序和数据的诸如软盘、CD-ROM、或DVD驱动器之类的计算机可读介质驱动器204;以及用于将计算机系统诸如经由因特网或其他网络及其网络硬件(诸如交换机、路由器、中继器、电缆和光纤、光线发射器和接收器、无线电发射器和接收器等等)连接到其他计算机系统以发送和/或接收数据的网络连接205。虽然如上所述配置的计算机系统通常被用于支持设施的操作,但是本领域的技术人员将理解,该设施可使用各种类型和配置的设备来实现,并且具有各种组件。

图3是示出在一些示例中根据设施执行以注册新实现者的样本交互的数据流图。由实现者操作的实现者客户端120向代码签署服务服务器100传送实现者注册请求301。实现者注册请求包含标识实现者的信息以及认证实现者的身份的证书。在各种示例中,实现者提供各种类型的证书,包括在一些示例中的OAuth证书。作为响应,代码签署服务服务器如下文结合图4所讨论来注册实现者,并且向实现者客户端返回确认实现者已注册了代码签署服务的实现者注册确认302。

图4是示出在一些示例中可由设施执行以处理实现者注册请求的示例动作的流程图。在401,设施从实现者客户端计算机系统接收实现者注册请求。在402,设施随机地生成该设施代表实现者维护的秘密状态。在一些示例中,该设施保护该实现者秘密状态不被暴露于代码签署服务的边界之外。在403,设施使用被包括在401处接收到的实现者注册请求中的实现者证书中的一些或全部,以及在402处生成的实现者秘密状态来为实现者生成包括私钥和公钥两者的密钥对。在各种实施例中,使用各种其他类型的非对称密钥对或非对称密钥收集方案。在一些实施例中,密钥对在403处的生成是确定性的,其基于实现者证书、实现者秘密状态以及可选的其他非变量基础;在一些示例中,在403处的生成是非确定性的,其包括一个或多个变量、随机和/或不可预测的基础。在404,如下文所讨论的图5所示,设施在实现者表格中创建新条目。在此新条目中,设施存储标识实现者的信息、实现者证书中的一些或全部、在402处为实现者创建的秘密状态、以及在403处为实现者生成的密钥对。在一些示例中(未示出),设施省略了存储实现者证书和/或实现者私钥。在一些示例中,在存储实现者私钥之前,设施使用实现者证书中的一些或全部或以不涉及使用实现者证书的方式(诸如使用由硬件安全模块提供或以其他方式与本地环境绑定的加密密钥)来加密实现者私钥;在一些此类示例中,该设施省略了存储实现者证书。在405,设施向实现者客户端发送实现者已被注册的确认。在405之后,这些动作结束。

本领域技术人员将理解,图4中所示的步骤和下文讨论的每个流程图都可以以各种方式来改变。例如,步骤的顺序可被重新安排;一些步骤可被并行执行;所示步骤可被省略;或者其他步骤可被包括;所示步骤可被划分成子步骤,或多个所示步骤可被合并成单个步骤,等等。

图5是示出在一些示例中设施所使用以存储关于每个已注册的软件实现者的信息的实现者表格的样本内容的表格图。实现者表格500由诸如行501和502之类的行构成,每行都对应于不同的已注册的实现者。每行都被划分成以下各列:包含标识该行所对应的实现者的信息的实现者身份列511;包含被用于认证该行所对应的实现者的实现者证书的实现者证书列512;包含被设施用于为该行所对应的实现者生成密钥的秘密状态的实现者秘密状态列513;包含设施为该行所对应的实现者生成的私钥的实现者私钥列514;以及包含设施为该行所对应的实现者生成的公钥的实现者公钥列515。例如,行501指示实现者Acme Utilities(巅峰事业)具有实现者证书Ai、实现者秘密状态Bi、实现者私钥Ci、和实现者公钥Di。

在一些示例中,设施采取附加措施来保护实现者表格的内容和/或其在提供服务中使用的其他状态。例如,在一些示例中,设施使用以物理地并通信地将其从设施在其上运行的一个或多个计算机系统和/或从所有其他网络连接的计算系统或所有其他计算机系统隔离的方式存储的密钥来加密持久存储的此类状态的版本。当存储在易失性存储器中的未加密的状态副本丢失时(诸如在崩溃或服务迁移中),如果被需要,则这些密钥可从它们的隔离中被物理地检索。在一些示例中,初始化设施在其上执行的计算系统的操作所需的密码或其他证书被类似地隔离。

虽然图5和下文所讨论的每个表格图都示出其内容和组织被设计成让人类读者更容易理解它们的表格,本领域的技术人员将会理解,设施用于存储此信息的实际数据结构可能不同于所示的表格,因为例如表格可能以不同的方式被组织;可能包含比所示更多或更少的信息;可能被压缩和/或被加密;可能包含比所示数量多得多的行等等。

图6是示出在一些示例中根据设施执行以代表实现者查找代码的交互的数据流图。由实现者操作的实现者客户端120向代码签署服务服务器100传送代码签署请求601。代码签署请求601包含标识实现者的信息、认证实现者的身份的证书、以及将被签署的代码表示。如上所述,此代码表示可以是将被分发的整个代码主体;表征将被分发的代码主体的目录;为将被分发的代码主体生成的一个或多个摘要,诸如通过在存在于一个或多个应用或其他软件单元中的各个文件中包括摘要的集合;或另一种类型的表示。作为响应,代码签署服务器验证代码签署请求中包含的实现者证书,并使用实现者的私钥来签署代码表示。在一些示例中,这涉及从由设施维护的实现者表格中检索实现者的私钥,在一些情况下使用实现者证书来解密实现者私钥。在一些示例中,这涉及使用接收到的实现者证书和由设施维护的实现者秘密状态来重新生成实现者私钥。代码签署服务服务器向实现者客户端返回包含经签署的代码表示副本的代码签署结果602。在一些示例中(未示出),代码签署服务服务器不是如图所示地返回具有签名的代码表示,而是仅返回签名,实现者客户端可将该签名与包括在代码签署请求中的代码表示组合。在接收到代码签署结果后,实现者客户端使代码签署结果可与代码表示所对应的代码主体结合使用,诸如通过将代码签署结果与代码主体一起分发,使代码签署结果在评估或安装代码主体时可用于顾客检索等。

图7是示出在一些示例中可由设施执行以处理代码签署请求的示例动作的流程图。在701,设施从实现者客户端计算机系统接收代码签署请求。在702,设施验证代码签署请求所包含的实现者证书。在703,设施从实现者表格中检索实现者的私钥。在一些示例中,在实现者表格中存储的实现者的私钥的版本被用实现者证书加密的情况下,该设施使用代码签署请求所包含的实现者证书来解密实现者的私钥。在其中实现者的私钥的版本未被存储在实现者表格中的示例中,该设施基于代码签署请求所包含的实现者证书和被存储在实现者表格中的实现者秘密来重新生成实现者的私钥。在704,设施使用实现者的私钥对代码签署请求所包含的代码表示执行加密签署操作。在各种示例中,设施使用各种加密签名方案,包括GMR(Goldwasser Micali Rivest)数字签名算法;RSA PKCS(公钥加密标准)签名方案、NIST(国家标准与技术研究院)DSA(数字签名算法);ECDSA(椭圆曲线数字签名算法);ElGamal签名方案;Rabin签名方案;以及XML签名方案。在705,设施将包含在704生成的经签署的代码表示的代码签署结果发送给实现者客户端计算机系统。在705之后,这些动作结束。

图8是示出在一些示例中根据设施向实现者的顾客和其他人提供对实现者公钥的访问的样本交互的数据流图。由顾客操作的顾客客户端130向代码签署服务服务器100传送公钥请求801。公钥请求包括标识其公钥被请求的实现者的信息。作为响应,代码签署服务服务器从实现者表格中检索由公钥请求所标识的实现者的公钥,并且在公钥响应802中将其返回给顾客客户端。

图9是示出在一些示例中可由设施执行以返回所请求的实现者公钥的示例动作的流程图。在901,设施从顾客客户端或从另一计算机系统接收公钥请求。在902,设施使用在901处接收到的公钥请求所包含的实现者身份信息来从实现者表格中检索所标识的实现者的公钥。在903,该设施向顾客客户端发送包含在902处检索到的公钥的公钥响应。在903之后,这些动作结束。

图10是示出在一些实施例中根据设施执行以更改或“滚动”实现者的密钥对的样本交互的数据流图。由实现者操作的实现者客户端120向代码签署服务服务器1001传送密钥滚动请求1001。密钥滚动请求包括标识实现者的信息以及认证实现者的身份的证书。作为响应,代码签署服务服务器基于为实现者生成的新秘密状态来为该实现者生成新密钥对。就设施将密钥对的成员存储在实现者表格中的程度和方式而言,该设施用新密钥对的成员替换这些密钥对的成员,并向实现者客户端发送指示密钥滚动操作已完成的密钥滚动确认1002。

图11是示出在一些示例中可由设施执行以处理密钥滚动请求的示例动作的流程图。在1101,设施从实现者客户端接收密钥滚动请求。在1102,该设施随机地生成新实现者秘密状态。在1103,设施使用被包含在请求中的实现者证书和在1102处生成的新秘密状态来为实现者生成新密钥对。在1104,该设施用在1102处生成的新实现者秘密状态和在1103处的新实现者密钥对为实现者更新实现者表格中的条目。在1105,设施向实现者客户端发送密钥滚动确认,该密钥滚动确认指示所请求的密钥滚动操作已被完成。在1105之后,这些动作结束。

图12是示出在一些示例中在响应于实现者的密钥滚动请求而被更新之后设施所使用的实现者表格的样本内容的表格图。通过将图12中的行1201和图5中的行501进行比较,可以看到,响应于来自Acme Utilities实现者的密钥滚动请求,该设施已将图5的列513中的实现者秘密状态Bi替换为图12的列1213中所示的实现者秘密状态Bi';将图5的列514中的实现者秘密状态Ci替换为图12的列1214中所示的实现者秘密状态Ci';以及将图5的列515中的实现者Di替换为图12的列1215中所示的实现者Di'。

在一些示例中,该设施提供用于签署软件代码的计算系统,包括:通信子系统,该通信子系统被配置为从请求者接收代码主体的表示;以及加密子系统,该加密子系统被配置为使用为请求者生成而请求者无法访问的密钥来签署被通信子系统接收到的代码主体的表示,该通信子系统进一步被配置为向请求者返回由加密子系统产生的经签署的代码主体。

在一些示例中,该设施提供一种计算机可读介质,该计算机可读介质具有被配置为使得计算系统为了在代码签署服务中登记软件实现者而进行以下的内容:接收标识实现者的信息;接收认证实现者的证书;为实现者生成秘密状态;基于至少(1)接收到的证书的至少一部分和(2)所生成的秘密状态的至少一部分,为实现者生成包括私钥和公钥的密钥对;以及持久地存储秘密状态。

在一些示例中,该设施提供了在计算系统中用于在代码签署服务中登记软件实现者的方法,该方法包括:接收标识实现者的信息;接收认证实现者的证书;为实现者生成秘密状态;基于至少(1)接收到的证书的至少一部分和(2)所生成的秘密状态的至少一部分,为实现者生成包括私钥和公钥的密钥对;以及持久地存储秘密状态。

在一些示例中,该设施提供了一种存储实现者表格数据结构的计算机可读介质,所述数据结构包括:多个条目,每个条目都对应于一软件实现者,每个条目包括:为软件实现者维护的秘密状态,使得数据结构的内容能用于为软件实现者生成密钥对,该密钥对包括能用于代表该软件实现者签署代码的私钥。

下文讨论的图13、14和15对应于设施的附加示例,其中实现者证书和实现者私钥都不被设施持久地维护;相反,每次从实现者客户端接收到包含实现者的证书的代码签署请求时,设施使用这些证书以及由设施存储的实现者秘密状态来重新生成该实现者的私钥。该设施使用此重新生成的实现者私钥代表实现者来签署代码。在此附加示例中,除非实现者通过将包含他的证书的代码签署请求连同将被签署的代码一起提交来参与,否则该设施无法代表实现者来签署代码。

图13是示出在一些示例中可由设施的附加示例执行以处理实现者注册请求的示例动作的流程图。图13的动作大致对应于图4的动作,除了在1304处,设施在实现者表格中创建仅存储实现者身份、实现者秘密状态、和实现者公钥的条目,而非还存储如404处的实现者证书和实现者私钥。

图14是示出在一些示例中设施的附加示例所使用以存储关于每个已注册的软件实现者的信息的实现者表格的样本内容的表格图。图14的动作大致对应于图5的动作,除了图14所示的实现者表格1400中省略了图5所示的实现者证书列512和实现者私钥列514。

图15是示出在一些示例中可由设施的附加示例执行以处理代码签署请求的示例动作的流程图。图15所示的动作大致对应于图7所示的动作,除了以下:不是如图7所示在703处从实现者表格中检索实现者的私钥,而是在1503,设施根据存储在实现者表格中的实现者秘密状态和代码签署请求所包含的实现者证书来重新生成实现者的私钥。

本领域技术人员将理解,上述设备可以以各种方式被直接适配或延伸。虽然前面的描述参考了具体的示例,但本发明的范围仅由下面的权利要求和其中所述的要素来定义。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1