应用程序加载代码签名的方法和装置与流程

文档序号:11828846阅读:283来源:国知局
应用程序加载代码签名的方法和装置与流程

本发明涉及互联网技术领域,特别涉及应用程序加载代码签名的方法和装置。



背景技术:

随着终端技术的发展,越来越多的应用程序被开发和安装使用,在为广大用户提供方便的同时,也带来了许多安全风险。为了避免用户下载安装到不安全的非法应用程序造成终端安全问题,终端所安装的系统程序对下载到终端上的应用程序进行验证,验证方式是由终端的系统程序对下载的待安装应用程序的代码签名进行校验,以识别软件来源以及软件开发者的真实身份,代码签名通常是由终端系统程序的认证机构授权给应用发布方,并由应用发布方加载在应用程序中。

但是代码签名可能存在篡改的风险,应用发布方将他人开发的应用程序中原有的代码签名强制删除,再用自己拥有的代码签名重新覆盖后再进行发布,使应用程序的标识变为自己的标识,导致应用程序归属不明确。更有甚者,代码签名被非法发布方获得,就可能被非法发布方用来发布非法应用,对用户终端安全造成极大的威胁。



技术实现要素:

本发明的主要目的为提供一种应用程序加载代码签名的方法和装置,避免恶意篡改或盗用代码签名,提高应用程序的安全性。

本发明提出一种应用程序加载代码签名的方法,包括步骤:

接收请求方发送的代码签名请求,所述代码签名请求包括所述请求方的身份信息和待签名的应用程序;

验证所述请求方的身份信息;

在所述请求方的身份信息验证通过后,采用认证机构授权的签名私钥对 所述应用程序加载代码签名;

在备份记录中备份本次签名后的所述应用程序、以及所述应用程序的本次签名信息。

优选地,所述采用认证机构授权的签名私钥对所述应用程序加载代码签名的步骤包括:

采用认证机构授权的签名私钥对所述应用程序加载代码签名,并根据所述应用程序的标识信息、本次签名的时间和签名私钥加密所述应用程序的代码签名。

优选地,所述在备份记录中备份本次签名后的所述应用程序、以及所述应用程序的本次签名信息的步骤包括:

判断所述备份记录中是否有所述应用程序的历史签名信息;

如果是,则将所述备份记录中的所述应用程序更新为本次签名后的所述应用程序,将所述历史签名信息更新为所述本次签名信息;

如果否,则根据所述应用程序的标识信息在所述备份记录中创建所述应用程序的记录,所述记录中包括所述应用程序的标识信息和本次签名信息,并对应于所述应用程序的记录保存本次签名后的所述应用程序。

优选地,所述验证所述请求方的身份信息的步骤之后还包括:

当所述请求方的身份信息验证未通过时,拒绝签名所述应用程序;

在所述备份记录中查找所述应用程序的历史签名信息;

当查找到所述应用程序的历史签名信息时,将所述备份记录中备份的所述应用程序的最新版本发送至所述请求方,或发送更新提示信息至所述请求方。

优选地,所述在备份记录中备份本次签名后的所述应用程序、以及所述应用程序的本次签名信息的步骤之后还包括:

接收请求方或使用方上报的所述应用程序的当前签名信息;

比较上报的所述应用程序的当前签名信息与所述备份记录中备份的所述应用程序的历史签名信息是否一致;

当上报的当前签名信息与备份的历史签名信息不一致时,将所述备份记录中备份的所述应用程序的最新版本发送至所述请求方或使用方,或发送更新提示信息至所述请求方或使用方。

本发明还提出一种应用程序加载代码签名的装置,包括:

接收模块,用于接收请求方发送的代码签名请求,所述代码签名请求包括所述请求方的身份信息和待签名的应用程序;

验证模块,用于验证所述请求方的身份信息;

签名模块,用于在所述请求方的身份信息验证通过后,采用认证机构授权的签名私钥对所述应用程序加载代码签名;

备份模块,用于在备份记录中备份本次签名后的所述应用程序、以及所述应用程序的本次签名信息。

优选地,所述签名模块具体用于:

采用认证机构授权的签名私钥对所述应用程序加载代码签名,并根据所述应用程序的标识信息、本次签名的时间和签名私钥加密所述应用程序的代码签名。

优选地,所述备份模块具体用于:

判断所述备份记录中是否有所述应用程序的历史签名信息;

如果是,则将所述备份记录中的所述应用程序更新为本次签名后的所述应用程序,将所述历史签名信息更新为所述本次签名信息;

如果否,则根据所述应用程序的标识信息在所述备份记录中创建所述应用程序的记录,所述记录中包括所述应用程序的标识信息和本次签名信息,并对应于所述应用程序的记录保存本次签名后的所述应用程序。

优选地,所述应用程序加载代码签名的装置,还包括发送模块;

所述签名模块还用于,当所述请求方的身份信息验证未通过时,拒绝签名所述应用程序;

所述备份模块还用于,在所述备份记录中查找所述应用程序的历史签名信息;

所述发送模块,用于当查找到所述应用程序的历史签名信息时,将所述备份记录中备份的所述应用程序的最新版本发送至所述请求方,或发送更新提示信息至所述请求方。

优选地,所述应用程序加载代码签名的装置,还包括比较模块;

所述接收模块还用于,接收请求方或使用方上报的所述应用程序的当前 签名信息;

所述比较模块用于,比较上报的所述应用程序的当前签名信息与所述备份记录中备份的所述应用程序的历史签名信息是否一致;

所述发送模块还用于,当上报的当前签名信息与备份的历史签名信息不一致时,将所述备份记录中备份的所述应用程序的最新版本发送至所述请求方或使用方,或发送更新提示信息至所述请求方或使用方。

本发明认证机构授权的私钥存放在服务器中,统一由服务器对需要签名的应用程序加载代码签名,避免了非法用户恶意篡改或盗用代码签名,防止私钥外泄,也有利于对代码签名的统一管理,进一步提高签名的安全性,确保应用程序安全传播与使用。

附图说明

图1为本发明应用程序加载代码签名的方法第一实施例的流程图;

图2为本发明应用程序加载代码签名的方法第二实施例的流程图;

图3为本发明应用程序加载代码签名的方法第三实施例的流程图;

图4为本发明应用程序加载代码签名的方法第四实施例的流程图;

图5为本发明应用程序加载代码签名的方法第五实施例的流程图;

图6为本发明应用程序加载代码签名的装置第一实施例的结构示意图;

图7为本发明应用程序加载代码签名的装置第二实施例的结构示意图;

图8为本发明应用程序加载代码签名的装置第三实施例的结构示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,图1为本发明应用程序加载代码签名的方法第一实施例的流程图。本实施例提出的应用程序加载代码签名的方法,包括:

步骤S10,接收请求方发送的代码签名请求;

本实施例中,为了提高代码签名的安全性,统一通过服务器实现对需要发布的应用程序加载代码签名。具体的,应用程序发布者需要发布应用程序前,作为请求方向服务器发送代码签名请求,代码签名请求中包括有请求方的身份信息和待签名的应用程序。请求方可以通过终端或第三方服务器来与本实施例中用于加载签名的服务器联网,并上报请求。

步骤S20,验证请求方的身份信息;

服务器对请求方的身份进行校验,验证该请求方是否为合法用户、是否具有签名权限,即是否已被认证机构授权允许开发该待签名的应用程序。

步骤S30,在请求方的身份信息验证通过后,采用认证机构授权的签名私钥对应用程序加载代码签名;

在服务器完成对请求方的身份验证后,采用签名私钥对应用程序加载代码签名。为了确保签名的安全性,防止私钥外泄,本实施例将认证机构授权的私钥存放在服务器中,统一由服务器对需要签名的应用程序加载代码签名,避免了非法用户恶意篡改或盗用代码签名,也有利于对代码签名的统一管理。

步骤S40,在备份记录中备份本次签名后的应用程序、以及应用程序的本次签名信息。

在完成签名后,服务器对本次签名的信息和签名后的应用程序备份,备份的签名信息包括应用程序的标识信息和签名后的信息,必要时也可以包括签名前的原始信息。备份的信息可以按照加载签名的时间顺序排列,或通过覆盖更新的方式只存储最近依次加载签名的信息。已签名的应用程序可以直接通过服务器发布,或由服务器下发至请求方,再由请求方自行发布。

由于本实施例中认证机构授权的私钥存放在服务器中,统一由服务器对需要签名的应用程序加载代码签名,避免了非法用户恶意篡改或盗用代码签名,防止私钥外泄,也有利于对代码签名的统一管理,进一步提高签名的安全性,确保应用程序安全传播与使用。

如图2所示,图2为本发明应用程序加载代码签名的方法第二实施例的流程图。本实施例包括图1所示实施例中的所有步骤,具体对步骤S30详细说明,步骤S30包括:

步骤S31,采用认证机构授权的签名私钥对应用程序加载代码签名,并根据应用程序的标识信息、本次签名的时间和签名私钥加密应用程序的代码签名。

为了确保签名的唯一性,服务器在为应用程序加载代码签名的同时,还采用签名私钥对应用程序的代码签名加密,在代码签名中增加一部分加密信息,由于在加密时还添加了应用程序的标识信息和本次签名的时间等因素,即使是同一款应用程序,在不同时间加载签名的加密信息都不相同,有利于进一步提高签名的安全性。

如图3所示,图3为本发明应用程序加载代码签名的方法第三实施例的流程图。本实施例包括图1所示实施例中的所有步骤,具体对步骤S40详细说明,步骤S40包括:

步骤S41,判断备份记录中是否有应用程序的历史签名信息;如果是,则执行步骤S42;如果否,则执行步骤S43;

完成本次签名的应用程序可能并不是首次加载签名,如果不是首次签名的应用程序,则在该应用程序前一次加载签名时已经在服务器中有过备份,那么在服务器的备份记录就可以找到该应用程序前一次加载签名时的备份文件。

步骤S42,将备份记录中的应用程序更新为本次签名后的应用程序,将历史签名信息更新为本次签名信息;

在找到前一次的备份记录后,通过覆盖更新的方式,将备份记录中的应用程序和签名信息均更新为本次签名的内容。采用覆盖更新的方式有利于节约服务器的存储空间。

步骤S43,根据应用程序的标识信息在备份记录中创建应用程序的记录,记录中包括应用程序的标识信息和本次签名信息,并对应于应用程序的记录保存本次签名后的应用程序。

如果本次完成签名加载的应用程序是首次加载签名,则在服务器的备份记录中没有该应用程序的相关信息,可以在备份记录中创建一个新的记录,用于记录本次签名后的应用程序的标识信息、签名信息和签名后的应用程序。在下一次对该应用程序加载新的代码签名后,可通过该应用程序的标识信息 查找到该应用程序的记录,并更新相应的签名信息和应用程序。本实施例通过备份签名记录,对已签名的应用程序和应用程序的代码签名统一管理,提高了应用程序的安全性。

如图4所示,图4为本发明应用程序加载代码签名的方法第四实施例的流程图。本实施例包括图1所示实施例中的所有步骤,还增加了对身份验证不通过的请求方的处理流程,具体是在步骤S20之后还包括:

步骤S51,当请求方的身份信息验证未通过时,拒绝签名应用程序;

本实施例在验证请求方身份时,对于没有签名权限的请求方拒绝签名此次上传的应用程序,则该应用程序由于无法加载代码签名而不能发布,即使发布了,由于在使用方终端的系统程序无法通过签名校验,不能被系统程序识别,进而不能在系统上正常运行,避免了非法应用程序对终端系统的危害。

步骤S52,在备份记录中查找应用程序的历史签名信息;

步骤S53,当查找到应用程序的历史签名信息时,将备份记录中备份的应用程序的最新版本发送至请求方,或发送更新提示信息至请求方。

为进一步提高应用程序安全性,服务器还可以在备份记录中查找与请求方上传的应用程序相同或近似的应用程序,并将已备份的应用程序下发给请求方,由于已备份的应用程序是已加载代码签名的应用程序,且是安全的应用程序,请求方可将请求方终端或第三方服务器上的应用程序及时更新为服务器发送的应用程序,提高应用程序使用的安全性。当然,服务器也可以只向请求方发送提示信息,由请求方自行选择是否下载和安装服务器备份的应用程序。

如图5所示,图5为本发明应用程序加载代码签名的方法第五实施例的流程图。本实施例包括图1所示实施例中的所有步骤,还增加了对上报的应用程序一致性验证的处理流程,具体是在步骤S40之后还包括:

步骤S61,接收请求方或使用方上报的应用程序的当前签名信息;

为了进一步提高安全应用程序的使用,在各应用程序中可预先设置一个上报程序,一旦请求方或使用方的终端连接互联网,即触发该上报程序,并由请求方或使用方的终端向服务器上报该终端上安装的应用程序的签名信 息。

步骤S62,比较上报的应用程序的当前签名信息与备份记录中备份的应用程序的历史签名信息是否一致;

步骤S63,当上报的当前签名信息与备份的历史签名信息不一致时,将备份记录中备份的应用程序的最新版本发送至请求方或使用方,或发送更新提示信息至请求方或使用方。

服务器在接收到上报的签名信息后,将其与备份的签名信息进行比较,判断是否一致,如果一致,则说明该应用程序的签名未被篡改,应用程序是安全的,如果不一致,则该应用程序可能存在签名被篡改的风险,或该应用程序不是当前发布的最新版本,有必要将终端中的应用程序更新。服务器可向请求方或使用方的终端发送备份记录中的最新版本的应用程序,或提示用户安装该最新版本,确保了应用程序使用的安全性。

如图6所示,图6为本发明应用程序加载代码签名的装置第一实施例的结构示意图。本实施例提出的应用程序加载代码签名的装置,设置在服务器上,包括:

接收模块10,用于接收请求方发送的代码签名请求,代码签名请求中包括有请求方的身份信息和待签名的应用程序;

验证模块20,用于验证请求方的身份信息;

签名模块30,用于在请求方的身份信息验证通过后,采用认证机构授权的签名私钥对应用程序加载代码签名;

备份模块40,用于在备份记录中备份本次签名后的应用程序、以及应用程序的本次签名信息。

本实施例中,为了提高代码签名的安全性,统一通过服务器实现对需要发布的应用程序加载代码签名。具体的,应用程序发布者需要发布应用程序前,作为请求方向服务器发送代码签名请求,代码签名请求中包括有请求方的身份信息和待签名的应用程序。请求方可以通过终端或第三方服务器来与本实施例中用于加载签名的服务器联网,并上报请求。服务器对请求方的身份进行校验,验证该请求方是否为合法用户、是否具有签名权限,即是否已被认证机构授权允许开发该待签名的应用程序。

在服务器完成对请求方的身份验证后,采用签名私钥对应用程序加载代码签名。为了确保签名的安全性,防止私钥外泄,本实施例将认证机构授权的私钥存放在服务器中,统一由服务器对需要签名的应用程序加载代码签名,避免了非法用户恶意篡改或盗用代码签名,也有利于对代码签名的统一管理。

在完成签名后,服务器对本次签名的信息和签名后的应用程序备份,备份的签名信息包括应用程序的标识信息和签名后的信息,必要时也可以包括签名前的原始信息。备份的信息可以按照加载签名的时间顺序排列,或通过覆盖更新的方式只存储最近依次加载签名的信息。已签名的应用程序可以直接通过服务器发布,或由服务器下发至请求方,再由请求方自行发布。

由于本实施例中认证机构授权的私钥存放在服务器中,统一由服务器对需要签名的应用程序加载代码签名,避免了非法用户恶意篡改或盗用代码签名,防止私钥外泄,也有利于对代码签名的统一管理,进一步提高签名的安全性,确保应用程序安全传播与使用。

进一步的,签名模块30具体用于:

采用认证机构授权的签名私钥对应用程序加载代码签名,并根据应用程序的标识信息、本次签名的时间和签名私钥加密应用程序的代码签名。

为了确保签名的唯一性,服务器在为应用程序加载代码签名的同时,还采用签名私钥对应用程序的代码签名加密,在代码签名中增加一部分加密信息,由于在加密时还添加了应用程序的标识信息和本次签名的时间等因素,即使是同一款应用程序,在不同时间加载签名的加密信息都不相同,有利于进一步提高签名的安全性。

进一步的,备份模块40具体用于:

判断备份记录中是否有应用程序的历史签名信息;

如果是,则将备份记录中的应用程序更新为本次签名后的应用程序,将历史签名信息更新为本次签名信息;

如果否,则根据应用程序的标识信息在备份记录中创建应用程序的记录,记录中包括应用程序的标识信息和本次签名信息,并对应于应用程序的记录保存本次签名后的应用程序。

完成本次签名的应用程序可能并不是首次加载签名,如果不是首次签名的应用程序,则在该应用程序前一次加载签名时已经在服务器中有过备份,那么在服务器的备份记录就可以找到该应用程序前一次加载签名时的备份文件。在找到前一次的备份记录后,通过覆盖更新的方式,将备份记录中的应用程序和签名信息均更新为本次签名的内容。采用覆盖更新的方式有利于节约服务器的存储空间。

如果本次完成签名加载的应用程序是首次加载签名,则在服务器的备份记录中没有该应用程序的相关信息,可以在备份记录中创建一个新的记录,用于记录本次签名后的应用程序的标识信息、签名信息和签名后的应用程序。在下一次对该应用程序加载新的代码签名后,可通过该应用程序的标识信息查找到该应用程序的记录,并更新相应的签名信息和应用程序。本实施例通过备份签名记录,对已签名的应用程序和应用程序的代码签名统一管理,提高了应用程序的安全性。

如图7所示,图7为本发明应用程序加载代码签名的装置第二实施例的结构示意图。本实施例包括图6所示实施例中的所有模块,为了实现对身份验证不通过的请求方的处理,还增加了发送模块50,具体如下:

签名模块30还用于,当请求方的身份信息验证未通过时,拒绝签名应用程序;

备份模块40还用于,在备份记录中查找应用程序的历史签名信息;

发送模块50,用于当查找到应用程序的历史签名信息时,将备份记录中备份的应用程序的最新版本发送至请求方,或发送更新提示信息至请求方。

本实施例在验证请求方身份时,对于没有签名权限的请求方拒绝签名此次上传的应用程序,则该应用程序由于无法加载代码签名而不能发布,即使发布了,由于在使用方终端的系统程序无法通过签名校验,不能被系统程序识别,进而不能在系统上正常运行,避免了非法应用程序对终端系统的危害。

为进一步提高应用程序安全性,服务器还可以在备份记录中查找与请求方上传的应用程序相同或近似的应用程序,并将已备份的应用程序下发给请求方,由于已备份的应用程序是已加载代码签名的应用程序,且是安全的应用程序,请求方可将请求方终端或第三方服务器上的应用程序及时更新为服 务器发送的应用程序,提高应用程序使用的安全性。当然,服务器也可以只向请求方发送提示信息,由请求方自行选择是否下载和安装服务器备份的应用程序。

如图8所示,图8为本发明应用程序加载代码签名的装置第三实施例的结构示意图。本实施例包括图6所示实施例中的所有模块,为了实现对上报的应用程序一致性验证的处理,还增加了比较模块60,具体如下:

接收模块10还用于,接收请求方或使用方上报的应用程序的当前签名信息;

比较模块60用于,比较上报的应用程序的当前签名信息与备份记录中备份的应用程序的历史签名信息是否一致;

发送模块50还用于,当上报的当前签名信息与备份的历史签名信息不一致时,将备份记录中备份的应用程序的最新版本发送至请求方或使用方,或发送更新提示信息至请求方或使用方。

为了进一步提高安全应用程序的使用,在各应用程序中可预先设置一个上报程序,一旦请求方或使用方的终端连接互联网,即触发该上报程序,并由请求方或使用方的终端向服务器上报该终端上安装的应用程序的签名信息。

服务器在接收到上报的签名信息后,将其与备份的签名信息进行比较,判断是否一致,如果一致,则说明该应用程序的签名未被篡改,应用程序是安全的,如果不一致,则该应用程序可能存在签名被篡改的风险,或该应用程序不是当前发布的最新版本,有必要将终端中的应用程序更新。服务器可向请求方或使用方的终端发送备份记录中的最新版本的应用程序,或提示用户安装该最新版本,确保了应用程序使用的安全性。

以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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