首页> 中国专利> 版本控制系统中对软件包自动签名的方法和系统

版本控制系统中对软件包自动签名的方法和系统

摘要

本发明涉及一种在版本控制系统中对软件包进行自动签名的方法,以及一种对软件包进行自动签名的系统。该自动签名方法主要通过搭建一自动签名系统来实现自动签名,自动签名系统主要包括版本控制系统和签名服务系统,签名服务系统主要包括:签名服务客户端、签名中转服务器、签名服务器,默认在版本控制系统服务器中部署签名服务客户端,在版本控制系统中自动触发软件包签名并保存软件包,在制作发行版本时可减少签名环节,节省大量时间,加速版本发布速度。通过构建签名服务系统使软件包签名环境独立出来,且对发行版本的签名密钥对通过密钥数据库进行管理,从而简化签名操作,减少人工干预,实现了自动化签名,同时误操作的可能被消除。

著录项

  • 公开/公告号CN106209754A

    专利类型发明专利

  • 公开/公告日2016-12-07

    原文格式PDF

  • 申请/专利权人 中标软件有限公司;

    申请/专利号CN201510234751.4

  • 申请日2015-05-08

  • 分类号H04L29/06(20060101);G06F21/10(20130101);G06F21/33(20130101);G06F21/44(20130101);G06F21/64(20130101);

  • 代理机构北京汇智英财专利代理事务所(普通合伙);

  • 代理人陈践实

  • 地址 200030 上海市番禺路1028号1006-1010室

  • 入库时间 2023-06-19 01:03:10

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-01-22

    授权

    授权

  • 2017-01-04

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20150508

    实质审查的生效

  • 2016-12-07

    公开

    公开

说明书

技术领域

本发明涉及一种对软件包进行签名的的方法及系统。

背景技术

为了证明软件确实是软件开发商发行的,软件签名是一种被广泛使用的方法。软件开发商对其发布的软件进行数字签名,用户可以通过代码签名服务鉴别软件的发布者及软件在传输过程中是否被篡改。软件开发者利用代码签名的抗伪造性,可为其商标和产品建立一定信誉。

Linux发行商通常会使用GPG对发布的软件包进行签名,用户可以通过验证软件包的签名来确保软件包来源的有效性和正当性,防止被恶意篡改。创建带签名的软件包时使用密钥对的私钥进行签名,然后将公钥公布出去,软件用户得到软件包后,通过公钥对软件包进行签名验证。在用GPG对软件包进行签名时,先利用单向加密算法对软件包提取特征码,然后用私钥对特征码进行加密,将加密后的特征码附加到原软件包上,就生成了签名软件包。加密后的特征码就是软件包的签名信息,并且可以单独保存为一个文件,即软件包的签名文件。

以rpm软件包为例,需要经过下面的步骤用GPG完成软件包的签名:

1.用GPG生成密钥对:生成的密钥相关文件一般保存在用户主目录下建立的一个.pgp子目录。密钥中包括密钥对用户、加密密码、公钥和私钥等信息。

2.配置rpm宏:必须在/usr/lib/rpm/macros文件或者在用户主目录下的~/.rpmmacros文件中,设置_pgp_name(使用的密码对用户)、_pgp_path(签名密钥的存放位置)。

3.对软件包文件进行签名:使用命令:rpm --addsign $rpmfile,接下来会提示输入所使用密钥的加密密码。

对于Linux操作系统发行版本,每个发行版一般都会包括几千个软件包,这样对每个软件包进行签名,工作量是巨大的。而常用的方法是只对更新的软件包进行签名,但这也容易发生漏签问题。在制作发行版时,需要将版本控制系统中对应操作系统发行版本的软件包导出,然后对软件包进行签名再构造制作发行版,这中间的软件包签名环节将需要至少几个小时才能完成。

操作系统发行版本,一般分为大版本(如6系列)和大版本基础上的小版本(如6.5)。一个大版本一般需要单独使用一套签名,另一个大版本使用另一套签名。针对上面rpm软件包签名过程中的步骤(2),一套签名的rpm软件包签名环境需要单独配置一套,在同一签名环境下,不可以同时提供两套签名分别为不同发行版本的软件包签名。这样,一个大版本的签名环境就要使用一台服务器来完成签名,当存在多个版本的发行版操作系统时,配置管理员就要管理多台版本管理服务器,维护成本和硬件成本很高。即使是在同一台服务器中,通过使用不同用户配置不同的签名环境,配置管理员也要使用不同的用户管理不同版本的签名环境,维护成本还是很高的。这样复杂的签名环境还会存在误操作的可能,将一个发行版本的软件包签署了另一个发行版本的签名。

操作系统发行版的大小版本的软件包由版本控制服务器统一管理,软件包签名环境也就搭建在版本控制服务器上。这种软件包签名环境也存在安全性问题,版本控制服务器部分权限对外开放,容易被人恶意侵入,盗用签名对非法软件包进行签名操作。

发明内容

有鉴于上述问题,本发明的主要目的,在于提供一种在版本控制系统中对软件包进行自动签名的方法,以及一种对软件包进行自动签名的系统。以简化操作系统发行版本制作流程降低发行成本,并解决因版本控制服务器部分权限对外开放,容易被人恶意侵入,盗用签名对非法软件包进行签名操作的问题。

为实现上述目的,本发明提供的主要方法包括:

搭建一自动签名系统,该自动签名系统主要包括版本控制系统和签名服务系统,签名服务系统主要包括:签名服务客户端、签名服务器;

其中,较佳的该签名服务系统还包含一签名中转服务器。

创建签名系统三个组件间进行连接验证的证书,并分别保存在签名中转服务器、签名服务器和签名服务客户端上;

签名中转服务器是连接的核心,创建验证证书时,以签名中转服务器为CA认证机构,分别为签名服务器和签名服务客户端签发认证证书;

启动签名中转服务器守护进程,等待签名服务客户端和签名服务器的连接;

签名服务器先要创建密钥数据库,并对数据库进行建表等初始化操作,然后启动签名服务器守护进程,连接签名中转服务器;

签名中转服务器接收到签名服务的连接请求,对连接验证证书进行验证,验证通过后建立TLS连接,并一直保持, 此时签名服务就绪,签名中转服务器等待签名服务客户端进行连接并发起请求。

本发明提供的主要方法还包括:

在版本控制系统中编译软件包,并保存编译的软件包,然后触发自动签名,调用签名服务客户端请求签名,并将操作系统发行版本号和编译的原始软件包作为参数传递;

签名服务客户端根据发行版本号从内部维护的列表中提取对应的密钥对用户名,并请求连接签名中转服务器;

签名服务客户端检查是否成功连接,如果连接失败,则显示失败信息并发邮件通知相关管理人员;如果连接成功,则向签名中转服务器发送软件包签名请求,并附带密钥对用户名和软件包作为参数一起发送;

签名中转服务器接收并转发给签名服务器;

签名服务器接收到软件包签名请求,根据传递的签名密钥对用户名,从密钥数据库中提取签名密钥,如果提取失败返回签名失败信息,如果提取成功,则用签名密钥对软件包进行签名操作,生成签名文件和签名软件包文件,然后将签名结果,包括两个文件一起返回签名中转服务器;

签名中转服务器将签名结果转发给签名服务客户端,传送完毕断开与签名服务客户端的连接;

签名服务客户端接收到签名结果,若是签名失败,则显示失败信息并发邮件通知相关管理人员,若签名成功,则将软件包的签名文件和签名软件包保存到版本控制系统中的相应目录中,并显示签名成功信息。

版本控制系统负责对各大小发行版本号内的软件包进行管理,在软件包存储结构上,再为每个软件包添加一个目录,目录名为签名密钥对用户,目录内创建签名文件目录和签名软件包文件目录,两目录内分别存放软件包的签名文件和签名软件包文件。其中,签名文件只保存软件包的签名信息,签名软件包文件是原软件包和签名文件的组合。

本发明提供的一种对软件包进行自动签名的系统,其主要包括:

一版本控制系统, 主要包括一版本控制数据库管理模块,一软件包编译处理模块,一提取发行版软件仓库模块;

一签名服务系统,主要包括签名服务客户端、签名中转服务器、签名服务器,提供GPG密钥对申请,签名请求处理,密钥管理,提取公钥等功能;

上述版本控制系统, 为了实现快速集成构造发行版,在原来软件包存储结构上,再为每个软件包添加一个目录,目录名为签名密钥对用户,目录内创建签名文件目录和签名软件包文件目录,两目录内分别存放软件包的签名文件和签名软件包文件。其中,签名文件只保存软件包的签名信息,签名软件包文件是原软件包和签名文件的组合,这样在构造发行版时直接取签名软件包。

上述版本控制系统中,软件包编译处理模块负责响应软件编译请求并分发给不同的编译机进行编译,编译完成后将软件包储存到相应目录,同时调用版本控制数据库管理模块,将软件包信息及对应的发行版本写入版本控制数据库; 版本控制数据库管理模块负责对多个发行版本及其所包括的软件包信息进行查询添加删除等管理功能; 提取发行版软件仓库模块,负责在构造发行版时,将版本控制库中所管理的对应发行版本号内所包含的所有软件包提取出来组成一个发行仓库,此处添加一个环节,根据是否提取签名软件包参数,来决定是提取原目录的软件包还是提取签名软件包目录中的软件包。

上述签名服务系统, 签名服务客户端负责提出操作请求,并对返回的处理结果进行处理。签名服务客户端可与版本控制系统放在一台服务器中,触发自动签名请求即是调用签名服务客户端提出软件包签名请求。提出的操作请求主要包括密钥对管理请求和软件包签名请求。软件包签名请求需要提供根据发行版本号确定的密钥对用户名参数和原始软件包,然后组成软件包签名请求命令发送给签名中转服务器。密钥对管理请求负责将密钥对的创建、删除等请求命令发送给签名中转服务器。签名服务客户端接收软件包签名结果,将接收到的软件包的签名文件和签名软件包文件按目录结构要求保存到版本控制系统中。

签名服务器负责实际的密钥管理以及软件包签名操作,所有的密钥都保存在其维护的密钥数据库内,为了密钥的安全,签名服务器与外部隔离,只连接签名中转服务器。当通过签名中转服务器接收到传送过来的签名请求时,根据传递的签名密钥对用户参数从密钥数据库中提取该用户对应的私钥,完成对传递过来的软件包的签名,然后将签名文件及签名软件包文件返回给签名中转服务器。密钥数据库保存的信息包括:密钥对标识字符串、密钥对用户名、密钥对、加密后的密钥密码。签名服务器主要包括请求响应处理模块、密钥数据库管理模块、密钥处理模块、软件包签名模块。请求响应处理模块是对签名服务客户端发起的操作请求进行响应并调用相应的处理程序。密钥数据库管理模块负责密钥数据库的初始化,查询、添加、删除密钥等对数据库的操作。密钥处理模块负责实际的创建密钥对、删除密钥、解析密钥等对密钥的处理。软件包签名模块负责从密钥数据库提取密钥,为软件包签名,生成软件包的签名文件和签名软件包文件。

签名中转服务器是签名服务客户端与签名服务器之间的桥梁,负责审核连接请求并建立连接,接收签名服务客户端请求并传递给签名服务器,接收签名服务器的处理结果再返回给签名服务客户端。签名中转服务器与签名服务客户端和签名服务器之间的连接访问使用TLS协议,要求验证连接证书,保障连接安全。

通过上述的技术方案,在制作发行版本时可以减少签名环节,节省大量时间,加速版本发布速度。通过构建签名服务系统,使软件包签名环境独立出来,且对发行版本的签名密钥对通过密钥数据库进行管理,简化了签名操作,减少了人工干预,实现了自动化签名,误操作的可能被消除了。通过中转服务器隔离签名服务器,签名环境的安全性得到了保障。

附图说明

图1为本发明的版本控制系统与签名服务系统的硬件连接示意图;

图2为本发明的签名服务系统的初始化流程图;

图3为本发明的版本控制系统完成软件包编译后触发自动签名后的签名流程图;

图4为本发明的软件包签名后,将软件包的签名文件和签名软件包文件存储到版本控制系统中的目录结构示意图;

图5为本发明的自动签名服务系统结构框图。

附图标记说明

1 自动签名系统

11 版本控制系统服务器

110 版本控制数据库管理模块

111 软件包编译处理模块

112 提取发行版软件包仓库模块

12 签名服务系统

121 签名服务客户端

1210 连接中转服务器模块

1211 软件包签名请求模块

1212 管理密钥对申请模块

1213 软件包签名结果处理模块

122 签名中转服务器

1220 连接证书验证模块

1221 连接控制模块

1222 请求传送模块

1223 处理结果返回模块

123 签名服务器

1230 连接中转服务器模块

1231 请求响应处理模块

1232 密钥数据库管理模块

1233 密钥管理模块

1234 软件包签名模块

13 软件包开发终端

14 软件包编译机。

具体实施方式

请配合参阅图1所示,公开了一个实施例的版本控制系统服务器11与签名服务系统12的硬件连接示意图,签名服务器123只与签名中转服务器122存在网络连接。签名中转服务器122允许有多个签名服务客户端121连接,默认在版本控制系统服务器11中部署签名服务客户端121,从而在软件包编译完后触发自动签名调用签名服务客户端121。版本控制系统服务器11主要负责各版本软件包的管理,软件包开发终端13提交软件包后,版本控制系统服务器11分发软件包到软件包编译机14进行编译,编译完成后将编译结果返回版本控制系统服务器11进行入库处理。

再继续参阅图2所示,公开了一个实施例的签名服务系统12的初始化流程图。首先需要创建签名服务系统12三个组件间进行连接验证的证书,并分别保存在签名中转服务器122、签名服务器123和签名服务客户端121上。因为签名中转服务器122是连接的核心,创建验证证书时,以签名中转服务器122为CA认证机构,分别为签名服务器123和签名服务客户端121签发认证证书。启动签名中转服务器122守护进程,等待签名服务客户端14和签名服务器13的连接。签名服务器123先要创建密钥数据库,并对数据库进行建表等初始化操作,然后启动签名服务器123守护进程,连接签名中转服务器122。签名中转服务器122接收到签名服务器123的连接请求,对连接验证证书进行验证,验证通过后建立TLS连接,并一直保持。此时签名服务就绪,签名中转服务器12等待签名服务客户端14进行连接并发起请求。

图3所示, 是版本控制系统服务器11完成软件包编译后触发自动签名后的签名流程图。在版本控制系统服务器11中对软件包编译完成后,会将编译的软件包保存到相应目录中,并将软件包信息添加到版本控制系统服务器11相应发行版本号的仓库中。然后触发自动签名,调用签名服务客户端121请求签名,并将操作系统发行版本号和编译的原始软件包作为参数传递,签名服务客户端121根据发行版本号从内部维护的列表中提取对应的密钥对用户名。签名服务客户端121请求连接签名中转服务器122,签名中转服务器122验证签名服务客户端121连接证书,如果验证成功,则建立与签名服务客户端121的连接,否则返回连接失败信息。签名服务客户端121检查是否成功连接,如果连接失败,则显示失败信息并发邮件通知相关管理人员;如果连接成功,则向中转服务器122发送软件包签名请求,并附带密钥对用户名和软件包作为参数一起发送。签名中转服务器122接收并转发给签名服务器123。签名服务器123接收到软件包签名请求,根据传递的签名密钥对用户名,从密钥数据库中提取签名密钥,如果提取失败返回签名失败信息,如果提取成功,则用签名密钥对软件包进行签名操作,生成签名文件和签名软件包文件,然后将签名结果,包括两个文件一起返回签名中转服务器122。然后签名中转服务器122将签名结果转发给签名服务客户端121,传送完毕断开与签名服务客户端121的连接。签名服务客户端接121收到签名结果,若是签名失败,则显示失败信息并发邮件通知相关管理人员,若签名成功,则将软件包的签名文件和签名软件包保存到版本控制系统服务器11中的相应目录中,并显示签名成功信息。

图4所示, 是软件包签名后,将软件包的签名文件和签名软件包文件存储到版本控制系统服务器11中的目录结构示意图。与原版本控制系统中存储目录结构相比,添加了“签名密钥对用户名1”目录。“签名密钥对用户名1”目录下分别创建“签名文件目录”用于保存各软件包的签名文件,和“签名软件包目录”用于保存完成签名的软件包。“签名密钥对用户名2”目录是保存的其他发行版本号对应的签名软件包。

软件包存储目录结构并未体现操作发行版本号,这是因为版本控制系统服务器11对操作发行版本号对应仓库中软件包的管理是通过将软件包信息(如软件包名和软件版本号)保存在版本控制系统服务器11维护的数据库中。这样图4中“软件包版本号1”目录中的软件包和“软件包版本号2”目录中的软件包分别属于不同的操作系统发行版本号。在从版本控制系统服务器11中导出发行版本的软件包仓库时,根据版本控制系统服务器11数据库中包括的相应发行版本号的软件包信息从存储目录中提取软件包。如果在导出时要求提取签名软件包时,则将对应“签名密钥对用户名”目录中的软件包提取出来,这样就直接省去了以前在提取软件包后再去对软件包签名的环节,节省了大量时间。

图5所示,是签名服务系统结构框图,图中除签名服务系统12的整个结构外,还将版本控制系统服务器11内涉及软件包自动签名的相关结构进行了说明。

在版本控制系统服务器11中,软件包编译处理模块111负责响应软件编译请求并分发给不同的编译机进行编译,编译完成后将软件包储存到相应目录,同时调用版本控制数据库管理模块110,将软件包信息及对应的发行版本号写入版本控制数据库,为了实现软件包自动签名,在编译完成后添加调用签名服务客户端121进行签名的流程。版本控制数据库管理模块110负责对多个发行版本及其所包括的软件包信息进行查询添加删除等管理功能。提取发行版软件仓库模块112,负责在构造发行版时,将版本控制库中所管理的对应发行版本号内所包含的所有软件包提取出来组成一个发行仓库,此处添加一个环节,根据是否提取签名软件包参数,来决定是提取原目录的软件包还是提取签名软件包目录中的软件包。

签名服务系统12按三个组件分别进行说明。签名服务客户端121分为连接中转服务器模块1210、软件包签名请求模块1211、管理密钥对申请模块1212、软件包签名结果处理模块1213。连接中转服务器模块1210负责在发出操作请求前,先向签名中转服务器122请求连接,并根据连接结果进行反馈。软件包签名请求模块1211负责响应版本控制系统服务器11提出的签名请求,并根据发行版本号查询密钥对用户名参数,然后组成软件包签名请求命令发送给签名中转服务器122。管理密钥对申请模块1212负责组成密钥对的创建、删除等请求命令并发送给签名中转服务器122。软件包签名结果处理模块1213负责接收到签名结果后进行处理,包括将软件包的签名文件和签名软件包文件保存到版本控制系统服务器11的对应目录。

签名中转服务器122分为连接证书验证模块1220、连接控制模块1221、请求传送模块1222、处理结果返回模块1223。连接证书验证模块1220负责对签名服务器123和签名服务客户端121请求连接的证书进行检验。连接控制模块1221负责在签名服务器123和签名服务客户端121连接证书验证通过后建立连接,以及处理断开连接操作。请求传送模块1222负责接收签名服务客户端121的请求命令,并发送给签名服务器123。处理结果返回模块1223负责接收签名服务器123的请求处理结果并传送给签名服务客户端121,然后断开与签名服务客户端121的连接。

签名服务器123分为连接中转服务器模块1230、请求响应处理模块1231、密钥数据库管理模块1232、密钥处理模块1233、软件包签名模块1234。连接中转服务器模块1230负责在服务启动时发起请求连接签名中转服务器122。请求响应处理模块1231是对客户端发起的操作请求进行响应并调用相应的处理程序。密钥数据库管理模块1232负责密钥数据库的初始化,查询、添加、删除密钥等对数据库的操作。密钥处理模块1233负责实际的创建密钥对、删除密钥、解析密钥等对密钥的处理。软件包签名模块1234负责从密钥数据库提取密钥,为软件包签名,生成软件包的签名文件和签名软件包文件。

本发明不限于必须使用签名中转服务器122,也可以签名服务客户端121直接连接签名服务器123。

本发明也不限于必须使用签名服务器123,而可直接在版本控制系统服务器11上通过架设签名密钥数据库,添加签名服务器123的密钥处理模块1233、软件包签名模块1234,来实现自动签名系统1的功能。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号