一种系统镜像文件的签名方法、客户端、服务器以及系统与流程

文档序号:12600748阅读:536来源:国知局
一种系统镜像文件的签名方法、客户端、服务器以及系统与流程

本发明涉及信息安全领域,特别是涉及一种系统镜像文件的签名方法、客户端、服务器以及系统。



背景技术:

面对移动终端日益严重的信息安全问题,越来越多的移动终端厂商采用安全启动(Secure Boot)机制来保护移动终端,安全启动机制中通过判断系统镜像文件的签名与芯片中烧写的数据是否对应来判定移动终端软件版本是否为授权版本,如果不对应表示移动终端软件版本为非授权版本,则不允许移动终端继续开机。

因此,移动终端是否安全首先要保证系统镜像文件签名的安全性,现有对系统镜像文件进行签名时多是将终端厂商自己的私钥给与开发人员或专门的rom制作商对其进行签名,而一旦私钥泄漏,移动终端很容易就会被破解,进而对系统安全造成威胁。



技术实现要素:

本发明提供了一种系统镜像文件的签名方法、客户端、服务器以及系统,以解决现有对系统镜像文件进行签名时容易造成私钥泄漏的问题。

为了解决上述问题,本发明公开了一种系统镜像文件的签名方法,包括以下步骤:

服务器设置签名目录及程序目录,所述签名目录对客户端具有访问权限;所述程序目录包括签名脚本和私钥,所述程序目录对客户端不具有访问权限;

所述服务器接收所述客户端上传的未签名的系统镜像文件并保存到所述签名目录;

所述服务器执行所述签名脚本,使用所述私钥对系统镜像文件进行签名;

所述客户端下载已签名的系统镜像文件。

进一步地,所述程序目录包括至少两个私钥,所述客户端与其中一个私钥对应;

所述服务器接收所述客户端上传的未签名的系统镜像文件并保存到所述签名目录,还包括:

所述服务器接收所述客户端上传的信息配置文件并保存到所述签名目录,所述信息配置文件包括客户端信息;

所述服务器执行所述签名脚本,使用所述私钥对系统镜像文件进行签名,还包括:

通过解析所述信息配置文件获得所述客户端信息,根据所述客户端信息确定与所述客户端对应的私钥。

进一步地,所述信息配置文件还包括平台信息,所述平台信息用于标识所述客户端的平台;所述程序目录包括至少两个签名脚本,所述客户端的平台与其中一个签名脚本对应;

所述服务器执行所述签名脚本,使用所述私钥对系统镜像文件进行签名,还包括:

通过解析所述信息配置文件获得所述平台信息,根据所述平台信息确定与所述客户端的平台对应的签名脚本。

进一步地,所述未签名的系统镜像文件至少为两个;

所述服务器接收所述客户端上传的未签名的系统镜像文件并保存到所述签名目录,还包括:

所述服务器接收至少两个未签名的系统镜像文件并分别保存到所述签名目录下的不同子目录中,所述子目录的个数与所述未签名的系统镜像文件的个数对应。

进一步地,所述服务器执行所述签名脚本,使用所述私钥对所述系统镜像文件进行签名,还包括:

所述服务器创建新的签名进程,当前签名进程至少为两个,分别对所述至少两个未签名的系统镜像文件同时进行签名。

进一步地,所述服务器创建新的签名进程之前还包括:

判断当前签名进程的个数是否小于阈值,若是则创建所述新的签名进程,否则等待直至当前签名进程的个数小于阈值。

进一步地,所述子目录设置有状态信息,所述服务器和客户端根据子目录的状态信息进行相应处理。

进一步地,所述签名目录设置有状态信息,所述服务器和客户端根据签名目录的状态信息进行相应处理。

进一步地,所述状态信息包括上传状态、签名状态、下载状态、以及超时状态。

本发明还公开了一种客户端,包括:

上传单元,用于上传未签名的系统镜像文件,上传后的系统镜像文件保存在服务器设置的签名目录中,所述签名目录对客户端具有访问权限;以及

下载单元,用于下载已签名的镜像文件,所述已签名的镜像文件是通过服务器执行程序目录的签名脚本,使用私钥对系统镜像文件签名获得;所述程序目录由服务器预先设置,包括所述签名脚本和私钥,所述程序目录对所述客户端不具有访问权限。

本发明还公开了一种服务器,包括:

设置单元,用于设置签名目录和程序目录,所述签名目录对客户端具有访问权限,所述程序目录包括签名脚本和私钥,所述程序目录对所述客户端不具备访问权限;

接收单元,用于接收所述客户端上传的未签名的系统镜像文件并保存到所述签名目录;以及

签名单元,用于执行签名脚本,使用私钥对系统镜像文件进行签名,已签名的系统镜像文件由所述客户端下载。

本发明还公开了一种系统镜像文件的签名系统,包括客户端和服务器;

所述客户端,用于上传未签名的系统镜像文件,以及下载已签名的系统镜像文件;

所述服务器,用于接收所述客户端上传的未签名的系统镜像文件并保存到预先设置的签名目录,执行程序目录的签名脚本,使用私钥对系统镜像文件进行签名;所述签名目录对所述客户端具有访问权限,所述程序目录包括所述签名脚本和私钥,所述程序目录对客户端不具有访问权限。

与现有技术相比,本发明包括以下优点:

本发明中对系统镜像文件进行签名时,先在服务器设置签名目录和程序目录,签名目录对客户端具有访问权限,程序目录对客户端不具有访问权限。服务器接收客户端上传的未签名的系统镜像文件并保存到签名目录。并执行程序目录的签名脚本,使用私钥对系统镜像文件进行签名。最后由客户端下载已签名的系统镜像文件,完成客户端系统镜像文件的签名。由于只通过服务器就可以完成系统镜像文件的签名,无需人工参与,避免了私钥泄漏的问题;并且用于保存系统镜像文件的签名目录与用于保存签名脚本及私钥的程序目录对客户端的访问权限做了不同的限制,相当于把签名目录与程序目录隔离开来,客户端不能访问程序目录,更无法获取程序目录中的签名脚本和私钥,进一步加强了私钥的安全性。并且本发明签名方法相对于现有技术需要人工签名方法无需做繁琐的手动操作,节省了大量人力成本。

附图说明

图1是本发明实施例的系统镜像文件的签名方法流程图;

图2是本发明另一实施例的系统镜像文件的签名方法流程图;

图3是本发明实施例客户端的结构框图;

图4是本发明实施例服务器的结构框图;

图5是本发明实施例签名系统的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

实施例一:

参阅图1,示出了本发明实施例的一种系统镜像文件的签名方法,该方法具体可以包括以下步骤。

步骤101、服务器设置签名目录和程序目录,签名目录对客户端具有访问权限;程序目录包括签名脚本和私钥,程序目录对客户端不具有访问权限。

考虑到本发明可能在linux操作系统环境下下运行,因此可以选用目前比较常用、稳定性比较好的linux ftp软件vsftpd(very secure FTP daemon,非常安全的FTP进程)进行部署ftp服务器。

服务器设置一个对客户端具有读写权限的签名目录,供客户端上传、下载系统镜像文件。另外再设置一个程序目录,用于保存签名脚本和私钥,且这个程序目录对客户端不具有访问权限,客户端无法进行上传、下载的操作。具体可通过ftp软件设置签名目录表示读写权限的标识进行,例如标识的值为“1”表示客户端具有读写权限,值为“0”表示客户端不具有读写权限。

在实际操作过程中会存在这样的情形,至少两个客户端向服务器上传自己的未签名的系统镜像文件,或者一个客户端多次上传未签名的系统镜像文件,这样未签名的系统镜像文件可能至少为两个,为了避免这些系统镜像文件之间产生命名冲突,同时便于管理系统镜像文件,每当客户端需要上传系统镜像文件时,就在签名目录下新建一个子目录。这样签名目录下就会存在多个子目录,用于分别保存至少两个未签名的系统镜像文件,即一个子目录中保存一个未签名的系统镜像文件,子目录的个数与未签名的镜像文件的个数对应。为避免命名冲突,由uuid(Universally Unique Identifier,通用唯一识别码)生成唯一的ID值作为目录名称赋予每个子目录。然后服务器将客户端上传的未签名的系统镜像文件保存到新建的子目录中。

步骤102、服务器接收客户端上传的未签名的系统镜像文件并保存到签名目录。

需要说明的是不同客户端所需的私钥可能不一致,因此程序目录中的私钥可能至少为两个,使用哪个私钥为系统镜像文件进行签名可由服务器根据预先设置的规则确定。本实施例中客户端还将信息配置文件也上传到服务器,与系统镜像文件一同保存到签名目录中。信息配置文件包括客户端信息,客户端信息用于区分不同客户端类型,客户端类型根据厂商的实际情况按需要进行划分,如按项目划分、按种类划分、按版本划分。客户端信息相同表示同一种类型的客户端,相对应地使用同一私钥进行签名。

客户端可以将信息配置文件与系统镜像文件一起上传,也可以分别上传,本发明不做限制。

示例性地,服务器预先设置客户端A对应私钥a、客户端B对应私钥b,当客户端A将系统镜像文件与信息配置文件上传到服务器后,服务器解析信息配置文件获得客户端信息,根据解析结果使用与客户端A对应的私钥a对系统镜像文件签名。

进一步地,由于客户端具有不同的平台,如高通平台、MTK平台等,为了提高签名通用性,保证签名脚本不只适用于某一个或几个平台,而是可以适应所有的平台,本发明实施例的信息配置文件还包括平台信息,平台信息用于标识所述客户端的平台,示例性地,若客户端为高通平台,则平台信息中包括高通平台标识。

优选地,信息配置文件与未签名的系统镜像文件共同保存到签名目录下的新建子目录中,由uuid为子目录生成目录名称。

步骤103、服务器执行签名脚本,使用私钥对系统镜像文件进行签名。

当签名目录或子目录中的未签名的系统镜像文件上传完毕后,服务器调用程序目录中的签名脚本,使用与客户端对应的私钥对系统镜像文件进行签名。

需要说明的是,不同平台所需的签名脚本是不一样的,程序目录中预存有与多个平台对应的签名脚本。服务器创建签名进程后首先解析信息配置文件,获得客户端对应的平台信息,根据该平台信息使用对应的签名脚本。

步骤104、客户端下载已签名的系统镜像文件。

当服务器对系统镜像文件签名完成后,客户端从签名目录或相应的子目录中下载已签名的系统镜像文件。

本实施例的系统镜像文件的签名方法,先在服务器设置签名目录和程序目录,签名目录对客户端具有访问权限,程序目录对客户端不具有访问权限。服务器接收客户端上传的未签名的系统镜像文件并保存到签名目录,并执行签名脚本,使用私钥对镜像文件进行签名。然后客户端下载已签名的系统镜像文件,完成对系统镜像文件的签名。由于通过服务器就可以完成系统镜像文件的签名,无需人工参与,避免了私钥泄漏的问题;并且用于保存系统镜像文件的签名目录与用于保存签名脚本及私钥的程序目录对客户端的访问权限做了不同的限制,相当于把签名目录与程序目录隔离开来,客户端不能访问程序目录,更无法获取程序目录中的签名脚本和私钥,进一步加强了私钥的安全性。并且本发明签名方法相对于现有技术需要人工签名方法无需做繁琐的手动操作,节省大量人力成本。

实施例二:

参照图2,示出了本发明另一实施例的一种对系统镜像文件进行签名的方法,该方法具体可以包括以下步骤:

步骤201、服务器设置签名目录及程序目录,签名目录对客户端具有访问权限;程序目录包括签名脚本和私钥,程序目录对客户端不具有访问权限。

本步骤可参考步骤101,在此不再赘述。

需要说明的是,在本实施例中,为方便服务器对签名目录或各子目录进行管理,对签名目录或各子目录设置状态信息,服务器和客户端根据状态信息进行相应处理。状态信息包括上传状态、签名状态、下载状态、及超时状态。

其中上传状态包括正在上传和上传完毕,正在上传表示客户端正在上传系统镜像文件,此时服务器对该目录不做任何处理。上传完毕表示客户端已经完成上传系统镜像文件,等待服务器进行签名。

签名状态包括正在签名和签名完毕,正在签名表示服务器正在对该目录中的系统镜像文件进行签名,签名完毕状态表示服务器已经签名完毕,等待客户端下载系统镜像文件。

下载状态包括下载完毕,表示客户端已经下载完已签名的系统镜像文件,服务器可以删除当前目录。

超时状态表示由于签名过程的某个步骤出现异常,当前目录在服务器上存在的时间超出允许的最大阈值,此时,服务器可以删除该目录。

以下步骤是服务器与客户端依据目录状态信息所进行的操作过程。

步骤202、客户端上传未签名的系统镜像文件,并在服务器中的签名目录下创建子目录,子目录用于保存系统镜像文件。

客户端根据系统镜像文件的上传状态修改子目录的状态信息为正在上传。

不做203、服务器更新签名目录,以便新建的子目录能及时更新。

步骤204、服务器获取第一子目录当前的状态信息,第一子目录为子目录中的其中一个。

由于服务器需要实时监控子目录的状态信息,本实施例签名程序采用守护进程(Daemon)实现,守护进程是运行在后台的一种特殊进程,用于周期性地执行某种任务或等待处理某些发生的事件。

步骤205、若第一子目录当前状态为正在上传,服务器不做任何处理。

步骤206、客户端上传完系统镜像文件后,将第一子目录的状态修改为上传完毕,服务器判断当前签名进程的个数是否小于阈值,若是则执行步骤208,否则执行步骤207。

系统镜像文件上传完毕后等待服务器为其签名,为提高服务器的签名效率,本实施例采用多进程方式,即当前签名进程可以至少为两个,分别对至少两个未签名的系统镜像文件同时进行签名,但由于服务器资源有限,同时运行太多进程会导致进程意外终止,因此本实施例限制了服务器同时运行的进程数量。

步骤207、服务器等待当前签名进程运行完毕并回收已完成的签名进程,返回步骤206。

步骤208、服务器创建新的签名进程对第一子目录的系统镜像文件进行签名。

步骤209、若第一子目录的系统镜像文件完成签名,服务器将第一子目录的当前状态修改为签名完毕,等待客户端下载已签名的系统镜像文件。

步骤210、客户端下载完已签名的系统镜像文件,将第一子目录的当前状态修改为下载完毕。

步骤211、若第一子目录的当前状态为下载完毕,服务器删除第一子目录,回收此次签名进程。

步骤212、判断服务器是否已遍历完所有子目录,若是则终止操作,否则返回步骤204。

本实施例的系统镜像文件的签名方法,服务器和客户端通过子目录的状态信息进行不同处理,方便了对子目录的管理,也使得签名过程有序进行。通过同时启动多个进程对多个系统镜像文件进行签名,提高了服务器的签名效率。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

实施例三:

本实施例提供一种客户端300,包括上传单元301和下载单元302。

上传单元301,用于上传未签名的镜像文件,上传后的系统镜像文件保存在服务器设置的签名目录中,签名目录对客户端具有访问权限。

下载单元302,用于下载已签名的镜像文件,已签名的镜像文件是通过服务器执行程序目录的签名脚本,使用私钥对系统镜像文件签名获得;程序目录由服务器预先设置,包括签名脚本和私钥,程序目录对所述客户端不具有访问权限。

实施例四:

本实施例提供一种服务器400,包括设置单元401、接收单元402、以及签名单元403。

设置单元401,用于设置签名目录和程序目录,签名目录对客户端具有访问权限,程序目录包括签名脚本和私钥,程序目录对客户端不具备访问权限。

接收单元402,用于接收客户端上传的未签名的系统镜像文件并保存到所述签名目录。

签名单元403,用于执行签名脚本,使用私钥对系统镜像文件进行签名,已签名的系统镜像文件由客户端下载。

实施例五:

本实施例提供一种系统镜像文件的签名系统500,包括客户端501和服务器502。

客户端501,用于上传未签名的系统镜像文件,以及下载已签名的系统镜像文件。

服务器502,用于接收客户端上传的未签名的系统镜像文件并保存到预先设置的签名目录,执行程序目录的签名脚本,使用私钥对系统镜像文件进行签名;签名目录对所述客户端具有访问权限,程序目录包括所述签名脚本和私钥,程序目录对客户端不具有访问权限。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种系统镜像文件的签名方法、客户端、服务器以及系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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