基于私钥托管的数字安全处理方法、设备及存储介质与流程

文档序号:14717640发布日期:2018-06-16 01:53阅读:106来源:国知局
基于私钥托管的数字安全处理方法、设备及存储介质与流程

本发明涉及网络安全技术领域,特别是涉及一种基于私钥托管的数字安全处理方法、计算机设备和计算机存储介质。



背景技术:

随着互联网技术的发展以及电子政务电子商务的崛起,网上银行、网上办公、网上购物等业务已经逐步进入大众的生活,并不断迅速地变化和发展。在涉及很多的关键性业务操作和敏感信息的传送时,通常使用数字签名技术,实现对数据的完整性验证、防篡改以及抗抵赖等安全保护。目前,机构及企业用户主要采用智能密码钥匙、智能IC卡等设备保存私钥,进行签名,然而智能密码钥匙、智能IC卡等设备一般由专人进行保管,每次使用需要进行申请,流程繁琐,使用不变,且随着移动场景的增多,基于PC端的硬件设备难以满足需求。



技术实现要素:

基于此,本申请实施例的目的在于提供一种基于私钥托管的数字安全处理方法、计算机设备和计算机存储介质。

一种基于私钥托管的数字安全处理方法,包括步骤:

接收服务端在接收到第一客户端发送的机构私钥托管请求时转发的机构私钥申请信息,所述机构私钥托管请求携带所述机构私钥申请信息;

向所述服务端发送第一处理请求,并接收所述服务端基于所述第一处理请求返回的第一处理响应,所述第一处理响应携带第一密钥生成参数;

根据所述第一密钥生成参数和用户识别码生成第一客户端密钥,并向所述服务端发送第一确认信息,所述第一确认信息携带所述第一客户端密钥。

一种基于私钥托管的数字安全处理方法,包括步骤:

向服务端发送签名请求;

接收所述服务端返回的签名响应,所述签名响应携带第五密钥生成参数和第六密钥生成参数;

根据所述第五密钥生成参数和用户识别码生成第五客户端密钥,根据所述第六密钥生成参数以及所述用户识别码生成第六客户端密钥,并向所述服务端发送第三密文获取请求,所述第三密文获取请求携带所述第六客户端密钥;

接收所述服务端返回的第三密文获取响应,所述第三密文获取响应携带从存储的第五私钥密文加密结果中提取的第三密文;

对所述第三密文进行解密获得第三解密结果,并向所述服务端发送第三密文解密响应,所述第三密文解密响应携带所述第三解密结果。

一种基于私钥托管的数字安全处理方法,包括步骤:

接收客户端发送的签名请求,根据该签名请求向所述客户端返回签名响应,所述签名响应携带第五密钥生成参数和第六密钥生成参数;

接收所述客户端发送的第三密文获取请求,所述第三密文获取请求携带所述客户端根据所述第六密钥生成参数以及所述用户识别码生成的第六客户端密钥;

向所述客户端返回第三密文获取响应,所述第三密文获取响应中携带从存储的第五私钥密文加密结果中提取的第三密文;

接收所述客户端返回的第三密文解密响应,所述第三密文解密响应携带所述客户端对第三密文进行解密得到的第三解密结果,并在基于所述第三解密结果解密出私钥密文后,进行数字签名,并根据所述第六客户端密钥对私钥密文进行加密,获得第六私钥密文加密结果,并将所述第六密钥生成参数与所述第六私钥密文解密结果关联存储。

一种基于私钥托管的数字安全处理方法,包括步骤:

接收服务端在接收到第一客户端发送的机构托管私钥授权请求时转发的机构私钥授权请求信息;

基于所述机构私钥授权请求信息向所述服务端发送第二处理请求,并接收所述服务端基于所述第二处理请求返回的第二处理响应,所述第二处理响应携带第二密钥生成参数和第三密钥生成参数;

根据所述第二密钥生成参数和用户识别码生成第二客户端密钥,根据所述第三密钥生成参数和所述用户识别码生成第三客户端密钥,并向所述服务端发送第一密文获取请求;

接收所述服务端返回的第一密文获取响应,所述第一密文获取响应携带基于存储的第二私钥密文加密结果确定的第一密文;

根据所述第二客户端密钥对所述第一密文进行解密,获得第一解密结果,并向所述服务端发送第一密文解密响应,所述第一密文解密响应携带所述第一解密结果。

一种基于私钥托管的数字安全处理方法,包括步骤:

向服务端发送申请获取私钥授权请求,并接收服务端返回的申请获取私钥授权响应,所述申请获取私钥授权响应还携带第四密钥生成参数;

根据所述第四密钥生成参数以及用户识别码生成第四客户端密钥,并向所述服务端发送第二密文获取请求,所述第二密文获取请求还携带所述第四客户端密钥;

接收所述服务端返回的第二密文获取响应,第二密文获取响应中携带从存储的私钥密文授权加密结果中提取的第二密文;

对所述第二密文进行解密,获得第二解密结果,并向所述服务端发送第二密文解密响应,所述第二密文解密响应携带所述第二解密结果。

一种基于私钥托管的数字安全处理方法,包括步骤:

在接收到机构托管私钥授权请求时,向客户端转发机构私钥授权请求信息;

接收所述客户端发送的第二处理请求,根据所述第二处理请求向所述客户端返回第二处理响应,所述第二处理响应携带第二密钥生成参数、第三密钥生成参数;

接收所述客户端发送的第一密文获取请求,所述第一密文获取请求携带根据所述第三密钥生成参数和用户识别码生成的第三客户端密钥;

向所述客户端返回第一密文获取响应,所述第一密文获取响应携带基于存储的第二私钥密文加密结果确定的第一密文;

接收所述客户端返回的第一密文解密响应,所述第一密文解密响应携带所述客户端对所述第一密文进行解密得到的第一解密结果,并在基于所述第一解密结果解密出私钥密文后,基于待授权用户公钥对私钥密文进行加密,获得私钥密文授权加密结果,并根据所述第三客户端密钥对所述私钥密文进行加密,获得第三私钥密文加密结果;将所述第三密钥生成参数与所述第三私钥密文解密结果关联存储。

一种基于私钥托管的数字安全处理方法,包括步骤:

接收客户端发送的申请获取私钥授权请求,向所述客户端返回申请获取私钥授权响应,所述申请获取私钥授权响应携带第四密钥生成参数;

接收所述客户端根据所述申请获取私钥授权响应发送的第二密文获取请求,所述第二密文获取请求携带所述客户端根据所述第四密钥生成参数以及用户识别码生成的第四客户端密钥;

向所述客户端返回第二密文获取响应,所述第二密文获取响应中携带从存储的私钥密文授权加密结果中提取的第二密文;

接收所述客户端返回的第二密文解密响应,所述第二密文解密响应携带所述客户端对所述第二密文进行解密得到的第二解密结果,并在基于所述第二解密结果解密出私钥密文后,获得授权结果,并根据所述第四客户端密钥对私钥密文进行加密,获得第四私钥密文加密结果;将所述第四密钥生成参数与所述第四私钥密文解密结果关联存储。

基于如上所述的实施例的方案,将机构的签名私钥托管在服务端,且在每一次进行签名、授权、获取授权等数字安全相关数字安全处理过程时,基于服务端托管的私钥密文,客户端与服务端协同完成该签名、授权、获取授权过程,且在每一次的完成签名、授权、获取授权的基础上,客户端进一步生成新的客户端密钥,服务端进一步基于该新的客户端密钥生成新的私钥密文加密结果,并据此实现对存储的私钥密文加密结果的更新,使得每一次进行数字安全处理时都需要客户端的用户的参与且每次使用的私钥密文加密结果都不一样,可以防止服务端后台人员保留私钥密文来冒充用户签名,从而进一步提高了数字安全处理的安全性。

附图说明

图1为一个实施例的本申请方案的应用环境的示意图;

图2是一个实施例中的基于私钥托管的数字安全处理方法的流程示意图;

图3是另一个实施例中的基于私钥托管的数字安全处理方法的流程示意图;

图4是另一个实施例中的基于私钥托管的数字安全处理方法的流程示意图;

图5是另一个实施例中的基于私钥托管的数字安全处理方法的流程示意图;

图6是另一个实施例中的基于私钥托管的数字安全处理方法的流程示意图;

图7是另一个实施例中的基于私钥托管的数字安全处理方法的流程示意图;

图8是一个具体示例中的基于私钥托管的数字安全处理的交互流程示意图;

图9是另一具体示例中的基于私钥托管的数字安全处理的交互流程示意图;

图10是另一具体示例中的基于私钥托管的数字安全处理的交互流程示意图;

图11是另一具体示例中的基于私钥托管的数字安全处理的交互流程示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

图1为一个实施例中本申请方案涉及的应用环境的示意图,参照图1,本实施例的方案涉及第一终端101、第二终端102以及服务端103,在一些实施例中还涉及密码机104,在另一些实施例中还可能涉及第三终端105和第四终端106。第一终端101、第二终端102、第三终端105、第四终端106与服务端102通过网络连接,密码机104仅与服务端103连接,在一些实施例中,密码机104也可以设置为服务端103的一部分。密码机103是用以生成加密后的私钥密文并导出、导入加密后的私钥密文进行签名,其只能与服务端102进行通信。第一终端101、第二终端102、第三终端105和第四终端106具体可以是台式终端、移动终端等设备,也可以是其他的可以或需要将私钥托管到服务端103时发起私钥托管或者私钥授权过程、或是在申请私钥托管的过程中进行验证、或要对在服务端103托管的私钥向服务端103进行授权、或是从服务端103获得服务端103存储的私钥的授权、或者是在需要进行数字签名时使用服务端103托管的私钥进行签名的设备,移动终端具体可以是手机、平板电脑、笔记本电脑等中的至少一种,服务端103可以用独立的服务器或多个服务器组成的服务器集群来实现。

在本申请方案的一些实施例中,以第一终端101是发起将私钥托管到服务端103的过程、第二终端102用以使用服务端103托管的私钥进行签名、第三终端105用以在申请私钥托管的过程中进行验证或者要对在服务端103托管的私钥向服务端103进行授权、以及第四终端106用以从服务端103获得服务端103存储的私钥的授权为例,第一终端101、第二终端102、第三终端105和第四终端106可以分别是不同的终端设备,也可以是指同一个终端设备,只是在不同的技术场景下实现不同的功能。

在一些实施例中,第一终端101可以通过网页、APP应用或其他的应用形式来发起将私钥托管到服务端103或申请机构托管私钥授权的过程,可用于经办人提交机构托管私钥申请、用户申请机构托管私钥授权。第二终端102可通过网页、APP应用或其他的应用形式来使用在服务端103托管的私钥进行签名。在一些具体示例中,第一终端101与第二终端102可以是同一个终端,即可以在相同的网页、APP应用或其他的应用形式进行集成,以发起将私钥托管到服务端103、发起申请机构托管私钥授权者使用服务端托管的私钥进行签名的过程。

在一些实施例中,第三终端105可以通过一个APP应用来完成机构托管私钥申请及授权其他用户使用机构托管私钥的过程,具有SM2密钥生成及运算功能,可用于法人代表确认机构托管私钥申请及授权其他用户使用机构托管私钥。第四终端106可以通过另一个APP应用来完成其他用户(非法人代表的用户)获得机构托管私钥授权,具有证书申请功能,同时具有密钥生成参数(如SM2密钥生成)及运算功能。在一些具体示例中,第三终端105和第四终端106上可以安装相同的APP,即法人代表可以通过该APP完成机构托管私钥申请及授权其他用户使用机构托管私钥的过程,而非法人代表的其他用户可以通过该APP来获得机构托管私钥授权。

可以理解,在另外一些具体示例中,还可以通过网页或者相同的APP来完成所有的需要由第一终端101、第二终端102、第三终端105以及第四终端106执行的上述处理过程,如发起私钥托管或者私钥授权过程、在申请私钥托管的过程中进行验证、对在服务端103托管的私钥向服务端103进行授权、从服务端103获得服务端103存储的私钥的授权、在需要进行数字签名时使用服务端103托管的私钥进行签名等。

图2示出了一个实施例中的基于私钥托管的数字安全处理方法的流程示意图,该实施例是以终端的处理过程为例进行说明,如图2所示,该实施例中的方法包括步骤S201至步骤S204。

步骤S201:向服务端发送签名请求。

其中,该签名请求可以由任何具有签名权限的机构人员基于其所使用的终端发出,该具有签名权限的机构人员,可以是机构的法人代表或者对机构私钥托管具有最高决定权限的人员的账号,也可以是获得了授权具有采用私钥进行签名的机构的其他人员。该签名请求中可以携带需要进行签名的待签名数据。

步骤S202:接收所述服务端返回的签名响应,所述签名响应携带第五密钥生成参数和第六密钥生成参数。

该第五密钥生成参数、第六密钥生成参数可以是任何终端可用以生成客户端密钥的参数,一个具体示例中的第五密钥生成参数、第六密钥生成参数可以是随机生成的随机数。

在一个实施例中,该签名响应还可以携带第七验证参数。该第七验证参数用以供终端的用户进行输入,以便于下一步服务端接收到终端发送的信息时,能够进行验证。该第七验证参数可以是任何可以进行验证的参数,如随机生成的随机数,该随机数的形式可以不限,可以是随机生成的数字、汉字、字符串或者其组合等任何可能的形式。

步骤S203:根据所述第五密钥生成参数和用户识别码生成第五客户端密钥,根据所述第六密钥生成参数以及所述用户识别码生成第六客户端密钥,并向所述服务端发送第三密文获取请求,所述第三密文获取请求携带所述第六客户端密钥。

根据第五密钥生成参数和用户识别码生成第五客户端密钥、根据第六密钥生成参数以及用户识别码生成第六客户端密钥的方式不限,例如可以用密钥推导函数KDF、哈希函数等来生成第五客户端密钥。

在一个具体示例中,根据第五密钥生成参数和用户识别码生成第五客户端密钥的步骤可以包括:根据第五密钥生成参数和用户识别码生成第五客户端私钥,并根据所述第五客户端私钥派生出第五客户端公钥。此时,第五客户端密钥包括该第五客户端公钥。根据第六密钥生成参数和用户识别码生成第六客户端密钥的步骤可以包括:根据第六密钥生成参数和用户识别码生成第六客户端私钥,并根据所述第六客户端私钥派生出第六客户端公钥。此时,第六客户端密钥包括该第六客户端公钥。

在一个实施例中,在上述签名响应中还携带第七验证参数的情况下,在向服务端发送第三密文获取请求之前,还可以包括步骤:获取用户输入的第八验证参数。此时,上述第三密文获取请求中,还携带该第八验证参数。在终端用户的输入正确的情况下,该第八验证参数应当与上述第七验证参数相同。

步骤S204:接收所述服务端返回的第三密文获取响应,所述第三密文获取响应携带从存储的第五私钥密文加密结果中提取的第三密文。

在一个实施例中,可以采用任何可能的方式基于存储的第五私钥密文加密结果确定的第三密文,以基于SM2加密方式得到第五私钥密文加密结果为例,可以是对存储的第五私钥密文加密结果按照SM2密文格式拆分为C1、C2和C3,并将C1作为该第三密文。

具体的对第三密文进行解密的方式本实施例不做限定。基于该第三密文解密响应携带第三解密结果,可以便于服务端分析该第三解密结果是否正确,从而实现客户端与服务端的相互配合来完成该签名过程。

在一个实施例中,本实施例的方法还可以包括如下步骤S211至步骤S213,以完成机构私钥的托管。

步骤211:接收服务端在接收到第一客户端发送的机构私钥托管请求时转发的机构私钥申请信息,所述机构私钥托管请求携带所述机构私钥申请信息。

在一些实施例中,发送机构私钥托管请求的第一客户端,与执行该实施例的方法的客户端可以是不同的客户端,如需要发起私钥托管的机构的经办人通过第一客户端发起该机构私钥托管请求。其中,该机构私钥申请信息,可以包含有机构(如企业)的相关信息(如机构ID等等),还可以包含有经办人的相关信息。服务端在接收到该机构私钥申请信息后,基于机构的相关信息(如机构ID),可以获得机构的法人代表或者对机构私钥托管具有最高决定权限的人员的账号,并将该机构私钥申请信息转发至法人代表或者对机构私钥托管具有最高决定权限的人员的账号对应的客户端,即本实施例方法执行时所在的客户端。

步骤S212:向所述服务端发送第一处理请求,并接收所述服务端基于所述第一处理请求返回的第一处理响应,所述第一处理响应携带第一密钥生成参数。

其中,该第一密钥生成参数可以是任何客户端可用以生成客户端密钥的参数。在一个具体示例中,该第一密钥生成参数可以是一个随机数。

在一个实施例中,该第一处理响应中还可以包括第一验证参数,该第一验证参数用以供终端的用户进行输入,以便于下一步服务端接收到终端发送的信息时,能够进行验证。该第一验证参数可以是任何可以进行验证的参数,如随机生成的随机数,该随机数的形式可以不限,可以是随机生成的数字、汉字、字符串或者其组合等任何可能的形式。

步骤S213:根据第一密钥生成参数和用户识别码生成第一客户端密钥,并向所述服务端发送第一确认信息,所述第一确认信息携带所述第一客户端密钥。

该用户识别码可以是执行本实施例方法的终端的PIN码(Personal Identification Number,个人识别密码),该PIN码可以是自行从终端读取,也可以是由终端的用户进行输入。

根据第一密钥生成参数和用户识别码生成第一客户端密钥的方式不限,例如可以用密钥推导函数KDF、哈希函数等来生成第一客户端密钥。在一个具体示例中,可以根据第一密钥生成参数和用户识别码生成第一客户端私钥,并根据所述第一客户端私钥派生出第一客户端公钥。此时,上述第一客户端密钥包括所述第一客户端公钥。

在一个实施例中,在上述第一处理响应中还包括第一验证参数的情况下,在向所述服务端发送第一确认信息之前,还可以包括步骤:获取用户输入的第二验证参数。此时,上述第一确认信息中,还携带该第二验证参数。在终端用户输入正确的情况下,该第二验证参数应当与上述第一验证参数相同。

在一个实施例中,在上述向服务端发送第一确认信息之前,还可以包括步骤:

对所述第一确认信息进行签名。从而通过客户端的签名,可以进一步确认该第一确认信息是经客户端用户(如机构的法人代表或者对机构私钥托管具有最高决定权限的人员)的授权发出,提高第一确认信息的不可抵赖性,以进一步提高安全性。

在一个具体示例中,上述第一确认信息还可以携带第二客户端数字证书。

在一个实施例中,本实施例的方案还可以包括如下步骤S221至步骤S225,以完成托管私钥的授权。

步骤S221:接收服务端在接收到第一客户端发送的机构托管私钥授权请求时转发的机构私钥授权请求信息。

在一些实施例中,发送机构托管私钥授权请求的第一客户端,与执行该实施例的方法的客户端可以是不同的客户端,如需要发起机构托管私钥授权请求的机构的经办人通过第一客户端发起该机构托管私钥授权请求。服务端在接收到该机构托管私钥授权请求后,基于机构的相关信息(如机构ID),可以获得机构的法人代表或者对机构私钥托管具有最高决定权限的人员的账号,并向法人代表或者对机构私钥托管具有最高决定权限的人员的账号对应的客户端(即本实施例方法执行时所在的客户端)转发机构私钥授权信息。

步骤S222:基于所述机构私钥授权请求信息向所述服务端发送第二处理请求,并接收所述服务端基于所述第二处理请求返回的第二处理响应,所述第二处理响应携带第二密钥生成参数。

其中,该第二密钥生成参数可以是任何客户端可用以生成客户端密钥的参数。在一个具体示例中,该第二密钥生成参数可以是一个随机数。

在一个实施例中,该第二处理响应中还可以包括第三验证参数,该第三验证参数用以供终端的用户进行输入,以便于下一步服务端接收到终端发送的信息时,能够进行验证。该第三验证参数可以是任何可以进行验证的参数,如随机生成的随机数,该随机数的形式可以不限,可以是随机生成的数字、汉字、字符串或者其组合等任何可能的形式。

步骤S223:根据第二密钥生成参数和用户识别码生成第二客户端密钥,并向服务端发送第一密文获取请求。

该用户识别码可以是执行本实施例方法的终端的PIN码,该PIN码可以是自行从终端读取,也可以是由终端的用户进行输入。

根据第二密钥生成参数和用户识别码生成第二客户端密钥的方式不限,例如可以用密钥推导函数KDF、哈希函数等来生成第二客户端密钥。在一个具体示例中,根据第二密钥生成参数和用户识别码生成第二客户端私钥,并根据第二客户端私钥派生出第二客户端公钥。此时,第二客户端密钥包括第二客户端公钥。

在一个实施例中,在上述第二处理响应中还包括第三验证参数的情况下,在向所述服务端发送第一密文获取请求之前,还可以包括步骤:获取用户输入的第四验证参数。此时,上述第一密文获取请求中,还携带该第四验证参数。在终端用户的输入正确的情况下,该第四验证参数应当与上述第三验证参数相同。

步骤S224:接收所述服务端返回的第一密文获取响应,所述第一密文获取响应携带基于存储的第二私钥密文加密结果确定的第一密文。

在一个实施例中,可以采用任何可能的方式基于存储的第二私钥密文加密结果确定的第一密文,以基于SM2加密方式得到第二私钥密文加密结果为例,可以是对存储的第二私钥密文加密结果按照SM2密文格式拆分为C1、C2和C3,并将C1作为该第一密文。

步骤S225:根据所述第二客户端密钥对所述第一密文进行解密,获得第一解密结果,并向所述服务端发送第一密文解密响应,所述第一密文解密响应携带所述第一解密结果。

具体的对第一密文进行解密的方式本实施例不做限定。基于该第一密文解密响应携带第一解密结果,可以便于服务端分析该第一解密结果是否正确,从而实现客户端与服务端的相互配合来完成该托管私钥的授权。

另一方面,在一个实施例中,上述第二处理响应还可以携带第三密钥生成参数;一个具体示例中的该第三密钥生成参数也可以是随机生成的随机数。

此时,在上述向所述服务端发送第一密文获取请求之前,还可以包括步骤:根据第三密钥生成参数和用户识别码生成第三客户端密钥。根据第三密钥生成参数和用户识别码生成第三客户端密钥的方式不限,例如可以用密钥推导函数KDF、哈希函数等来生成第三客户端密钥。在一个具体示例中,根据第三密钥生成参数和用户识别码生成第三客户端密钥的步骤可以包括:根据所述第三密钥生成参数和用户识别码生成第三客户端私钥,并根据所述第三客户端私钥派生出第三客户端公钥。所述第三客户端密钥包括所述第三客户端公钥。

此时,上述所述第一密文获取请求还携带所述第三客户端密钥。

其中,上述第二处理响应携带待授权用户证书。在另一个实施例中,在向服务端发送第一密文获取请求之前,还可以包括步骤:对第一密文获取请求进行签名。

一个实施例中,本实施例中的方法还包括下述步骤S231至步骤S234,以获得使用托管私钥的授权。

步骤S231:向服务端发送申请获取私钥授权请求,并接收服务端返回的申请获取私钥授权响应。

在一个具体示例中,可以由需要申请获得托管私钥的授权、需要后续能够用服务端存储的私钥进行签名的该机构的用户(待授权)通过客户端发起该申请获取私钥授权请求,该申请获取私钥授权请求可以携带该待授权用户的相关信息。

在一个实施例中,该申请获取私钥授权响应还可以包括第五验证参数。该第五验证参数用以供终端的用户进行输入,以便于下一步服务端接收到终端发送的信息时,能够进行验证。该第五验证参数可以是任何可以进行验证的参数,如随机生成的随机数,该随机数的形式可以不限,可以是随机生成的数字、汉字、字符串或者其组合等任何可能的形式。

在一个实施例中,该申请获取私钥授权响应还可以携带第四密钥生成参数。该第四密钥生成参数可以是任何客户端可用以生成客户端密钥的参数。在一个具体示例中,该第四密钥生成参数可以是一个随机数。

步骤S232:根据申请获取私钥授权响应向服务端发送第二密文获取请求。

在一个实施例中,在上述申请获取私钥授权响应中还携带第五验证参数时,在向所述服务端发送第二密文获取请求之前,还可以包括步骤:获取用户输入的第六验证参数。此时,上述第二密文获取请求中,还携带该第六验证参数。在终端用户的输入正确的情况下,该第六验证参数应当与上述第五验证参数相同。

在一个实施例中,在上述申请获取私钥授权响应中还携带第四密钥生成参数的情况下,在向服务端发送第二密文获取请求之前,还可以包括步骤:根据所述第四密钥生成参数以及用户识别码生成第四客户端密钥。此时,所述第二密文获取请求还携带所述第四客户端密钥。该用户识别码可以是执行本实施例方法的终端的PIN码,该PIN码可以从终端读取,也可以是由终端的用户进行输入。

根据第四密钥生成参数和用户识别码生成第四客户端密钥的方式不限,例如可以用密钥推导函数KDF、哈希函数等来生成第四客户端密钥。在一个具体示例中,根据第四密钥生成参数和用户识别码生成第四客户端密钥的步骤可以包括:根据第四密钥生成参数和用户识别码生成第四客户端私钥,并根据第四客户端私钥派生出第四客户端公钥。此时,第四客户端密钥包括该第四客户端公钥。

步骤S233:接收服务端返回的第二密文获取响应,第二密文获取响应中携带从存储的私钥密文授权加密结果中提取的第二密文。

在一个实施例中,可以采用任何可能的方式基于存储的私钥密文授权加密结果确定第二密文,以基于SM2加密方式得到私钥密文授权加密结果为例,可以是对存储的私钥密文授权加密结果按照SM2密文格式拆分为C1、C2和C3,并将C1作为该第二密文。

步骤S234:对所述第二密文进行解密,获得第二解密结果,并向所述服务端发送第二密文解密响应,所述第二密文解密响应携带所述第二解密结果。

具体的对第二密文进行解密的方式本实施例不做限定。基于该第二密文解密响应携带第二解密结果,可以便于服务端分析该第二解密结果是否正确,从而实现客户端与服务端的相互配合来完成该申请获取私钥授权的过程。

图3示出了另一个实施例中的基于私钥托管的数字安全处理方法的流程示意图,该实施例是以服务端103的处理过程为例进行说明。如图3所示,该实施例中的基于私钥托管的数字安全处理方法包括步骤S301至步骤S304。

步骤S301:接收客户端发送的签名请求,根据该签名请求向所述客户端返回签名响应,该签名响应携带第五密钥生成参数和第六密钥生成参数。

其中,发出该签名请求的客户端可以是任何具有签名权限的机构人员所使用的客户端,该具有签名权限的机构人员,可以是机构的法人代表或者对机构私钥托管具有最高决定权限的人员的账号,也可以是获得了授权具有采用私钥进行签名的机构的其他人员。该签名请求中可以携带需要进行签名的待签名数据。

该第五密钥生成参数、第六密钥生成参数可以是任何终端可用以生成客户端密钥的参数,一个具体示例中的第五密钥生成参数、第六密钥生成参数可以是随机生成的随机数。

在一个实施例中,该签名响应还可以携带第七验证参数。该第七验证参数用以供终端的用户进行输入,以便于下一步服务端接收到终端发送的信息时,能够进行验证。该第七验证参数可以是任何可以进行验证的参数,如随机生成的随机数,该随机数的形式可以不限,可以是随机生成的数字、汉字、字符串或者其组合等任何可能的形式。

步骤S302:接收客户端发送的第三密文获取请求,所述第三密文获取请求携带客户端根据所述第六密钥生成参数以及所述用户识别码生成的第六客户端密钥。

客户端根据第五密钥生成参数和用户识别码生成第五客户端密钥、根据第六密钥生成参数以及用户识别码生成第六客户端密钥的方式不限,例如可以用密钥推导函数KDF、哈希函数等来生成第五客户端密钥。

在一个具体示例中,客户端根据第五密钥生成参数和用户识别码生成第五客户端密钥的步骤可以包括:根据第五密钥生成参数和用户识别码生成第五客户端私钥,并根据第五客户端私钥派生出第五客户端公钥。此时,第五客户端密钥包括该第五客户端公钥。根据第六密钥生成参数和用户识别码生成第六客户端密钥的步骤可以包括:根据第六密钥生成参数和用户识别码生成第六客户端私钥,并根据第六客户端私钥派生出第六客户端公钥。此时,第六客户端密钥包括该第六客户端公钥。

在一个实施例中,在上述签名响应中还携带第七验证参数的情况下,此时,所述第三密文获取请求还携带用户输入的第八验证参数。此时,本实施例的方法还可以包括步骤:验证所述第八验证参数与所述第七验证参数的一致性。在终端用户输入正确的情况下,该第八验证参数应当与上述第七验证参数相同。

步骤S303:向所述客户端返回第三密文获取响应,第三密文获取响应中携带从存储的第五私钥密文加密结果中提取的第三密文。

在一个实施例中,可以采用任何可能的方式基于存储的第五私钥密文加密结果确定的第三密文,以基于SM2加密方式得到第五私钥密文加密结果为例,可以是对存储的第五私钥密文加密结果按照SM2密文格式拆分为C1、C2和C3,并将C1作为该第三密文。

步骤S304:接收客户端返回的第三密文解密响应,所述第三密文解密响应携带所述客户端对第三密文进行解密得到的第三解密结果,并在基于所述第三解密结果解密出私钥密文后,进行数字签名,并根据第六客户端密钥对私钥密文进行加密,获得第六私钥密文加密结果,并将第六密钥生成参数与所述第六私钥密文解密结果关联存储。该私钥密文可以是对第五私钥密文加密结果解析得到的私钥密文。

具体的对第三密文进行解密的方式本实施例不做限定。基于该第三密文解密响应携带第三解密结果,服务端可以分析该第三解密结果是否正确,从而实现客户端与服务端的相互配合来完成该托管私钥授权的申请过程。此外,在进行数字签名时,一个实施例中可以是将私钥密文和待签名数据发送给密码机后,由密码机进行签名,获得数字签名结果。

其中,这里的对第六密钥生成参数与第六私钥密文解密结果的关联存储,可以是对服务端已经存储的第五私钥密文加密结果及其对应的密钥生成参数的更新。即服务端不再存储第五私钥密文加密结果及其对应的密钥生成参数,而是存储关联的第六密钥生成参数与所述第六私钥密文解密结果,从而确保在每一次签名之后,服务端总是基于终端的用户的参与生成新的私钥密文加密结果,确保服务端每次进行签名时所使用的私钥密文加密结果都不一样,可以防止服务端后台人员保留私钥密文来冒充用户签名,进一步提高数字安全处理的安全性。

在一个实施例中,本实施例的方法还可以包括如下步骤S311至步骤S315,以完成机构私钥的托管。

步骤S311:在接收到机构私钥托管请求时,向所述客户端转发机构私钥申请信息,机构私钥托管请求中携带所述机构私钥申请信息。

在一些实施例中,发送机构私钥托管请求的客户端,与接收转发的机构私钥申请信息的客户端可以是不同的客户端,如需要发起私钥托管的机构的经办人通过第一客户端发起该机构私钥托管请求。服务端在接收到该机构私钥申请信息后,基于机构的相关信息(如机构ID),可以获得机构的法人代表或者对机构私钥托管具有最高决定权限的人员的账号,并将该机构私钥申请信息转发至法人代表或者对机构私钥托管具有最高决定权限的人员的账号对应的客户端。

步骤S312:接收所述客户端发送的第一处理请求,根据第一处理请求向所述客户端返回第一处理响应,所述第一处理响应携带第一密钥生成参数。

其中,该第一密钥生成参数可以是任何客户端可用以生成客户端密钥的参数。在一个具体示例中,该第一密钥生成参数可以是一个随机数。

在一个实施例中,该第一处理响应中还可以包括第一验证参数,该第一验证参数用以供终端的用户进行输入,以便于下一步服务端接收到终端发送的信息时,能够进行验证。该第一验证参数可以是任何可以进行验证的参数,如随机生成的随机数,该随机数的形式可以不限,可以是随机生成的数字、汉字、字符串或者其组合等任何可能的形式。

步骤S313:接收所述客户端发送的第一确认信息,第一确认信息携带所述客户端基于所述第一密钥生成参数和用户识别码生成的第一客户端密钥。

客户端可采用任何可能的方式来根据第一密钥生成参数和用户识别码生成第一客户端密钥,如用密钥推导函数KDF、哈希函数等来生成第一客户端密钥。在一个具体示例中,客户端可以根据第一密钥生成参数和用户识别码生成第一客户端私钥,并根据第一客户端私钥派生出第一客户端公钥。此时第一客户端密钥可以包括该第一客户端公钥。其中该用户识别码可以是终端101的PIN码,该PIN码可以是客户端从所在的终端设备获取,也可以是由客户端的用户输入。

在一个实施例中,在上述第一处理响应还包括第一验证参数的情况下,上述第一确认信息中,还携带客户端的用户输入的第二验证参数。在客户端的用户输入正确的情况下,该第二验证参数应当与上述第一验证参数相同。

在此情况下,在进入下一步骤S314之前,还可以包括步骤:验证所述第二验证参数与所述第一验证参数的一致性。并在验证第二验证参数与第一验证参数一致的情况下,再进入下一步骤S304,否则向客户端返回失败信息或者直接退出当前的处理流程。

在一个示例中,在客户端有对第一确认信息进行签名的情况下,还可以进一步在验证所述第一确认信息的签名的有效性。具体的验证签名的有效性的方式,可以采用任何可能的方式进行。

在一个具体示例中,所述第一确认信息还可以携带第二客户端数字证书。此时,服务端可以通过第二客户端数字证书验证第一确认信息的签名的有效性。

步骤S314:获取私钥密文,并基于所述第一客户端密钥对所述私钥密文进行加密,获得第一私钥密文加密结果。

一个具体示例中可以从密码机104获取私钥密文。第一客户端密钥对所述私钥密文进行加密的方式,可以采用任何可能的方式进行。

步骤S315:将第一密钥生成参数、所述第一私钥密文加密结果关联存储。

在一个实施例中,本实施例的方案还可以包括如下步骤S321至步骤S325,以完成托管私钥的授权。

步骤S321:在接收到机构托管私钥授权请求时,向所述客户端转发机构私钥授权请求信息。

在一些实施例中,发送机构托管私钥授权请求的客户端,与接收转发的机构私钥授权请求信息的客户端可以是不同的客户端,如需要发起机构托管私钥授权请求的机构的经办人通过第一客户端发起该机构托管私钥授权请求。服务端在接收到该机构托管私钥授权请求后,基于机构的相关信息(如机构ID),可以获得机构的法人代表或者对机构私钥托管具有最高决定权限的人员的账号,并向法人代表或者对机构私钥托管具有最高决定权限的人员的账号对应的客户端(即接收转发的机构私钥授权请求信息的客户端)转发机构私钥授权信息。

步骤S322:接收所述客户端发送的第二处理请求,根据所述第二处理请求向所述客户端返回第二处理响应,所述第二处理响应携带第二密钥生成参数。

其中,该第二密钥生成参数可以是任何客户端可用以生成客户端密钥的参数。在一个具体示例中,该第二密钥生成参数可以是一个随机数。

在一个实施例中,该第二处理响应中还可以包括第三验证参数,该第三验证参数用以供终端的用户进行输入,以便于下一步服务端接收到终端发送的信息时,能够进行验证。该第三验证参数可以是任何可以进行验证的参数,如随机生成的随机数,该随机数的形式可以不限,可以是随机生成的数字、汉字、字符串或者其组合等任何可能的形式。

步骤S323:接收所述客户端发送的第一密文获取请求。

在一个实施例中,在上述第二处理响应还包括第三验证参数的情况下,上述第一密文获取请求中,还携带客户端的用户输入的第四验证参数。在客户端的用户输入正确的情况下,该第四验证参数应当与上述第三验证参数相同。

因此,在此情况下,在进入下一步骤S324之前,还可以包括步骤:验证所述第四验证参数与所述第三验证参数的一致性。并在验证第四验证参数与第三一验证参数一致的情况下,再进入下一步骤S324,否则向客户端返回失败信息或者直接退出当前的处理流程。

在一个示例中,第二处理响应还携带待授权用户证书。在另一个示例中,本实施例的方法还包括步骤:验证所述第一密文获取请求的签名的有效性。具体的验证签名的有效性的方式,可以采用任何可能的方式进行。

步骤S324:向所述客户端返回第一密文获取响应,所述第一密文获取响应携带基于存储的第二私钥密文加密结果确定的第一密文。

在一个实施例中,可以采用任何可能的方式获得基于存储的第二私钥密文加密结果确定的第一密文,以基于SM2加密方式得到第二私钥密文加密结果为例,可以是对存储的第二私钥密文加密结果按照SM2密文格式拆分为C1、C2和C3,并将C1作为该第一密文。

步骤S325:接收客户端返回的第一密文解密响应,第一密文解密响应携带第二客户端对所述第一密文进行解密得到的第一解密结果,并在基于第一解密结果解密出私钥密文后,基于待授权用户公钥对私钥密文进行加密,获得私钥密文授权加密结果。该私钥密文可以是对第二私钥密文加密结果解析得到的私钥密文。

具体的基于第二客户端密钥对第一密文进行解密的方式本实施例不做限定。在第一密文解密响应中携带第一解密结果,服务端可分析该第一解密结果是否正确,从而实现客户端与服务端的相互配合来完成该托管私钥的授权。

另一方面,在一个实施例中,该第二处理响应还可以携带第三密钥生成参数;一个具体示例中的该第三密钥生成参数也可以是随机生成的随机数。

此时,所述第一密文获取请求还携带所述客户端根据第三密钥生成参数和用户识别码生成的第三客户端密钥。客户端根据第三密钥生成参数和用户识别码生成第三客户端密钥的方式不限,例如可以用密钥推导函数KDF、哈希函数等来生成第三客户端密钥。在一个具体示例中,客户端根据所述第三密钥生成参数和用户识别码生成第三客户端私钥,并根据所述第三客户端私钥派生出第三客户端公钥。所述第三客户端密钥包括所述第三客户端公钥。

此时,上述所述第一密文获取请求还携带所述第三客户端密钥。且本实施例方法还可以包括步骤:

根据第三客户端密钥对私钥密文进行加密,获得第三私钥密文加密结果;

将所述第三密钥生成参数与所述第三私钥密文解密结果关联存储。

其中,这里的对第三密钥生成参数、第三私钥密文加密结果的关联存储,可以是对服务端已经存储的第二密钥生成参数以及第二私钥密文加密结果的更新。即服务端不再存储第二密钥生成参数、第二私钥密文加密结果的关联关系,而是存储关联的第三密钥生成参数、第三私钥密文加密结果,从而确保每一次处理之后,服务端总是基于终端的用户的参与生成新的私钥密文加密结果,确保服务端每次执行授权过程时,所使用的私钥密文加密结果都不一样,可以防止服务端后台人员保留私钥密文来冒充用户签名,从而进一步提高数字安全处理的安全性。

一个实施例中,本实施例中的方法还包括下述步骤S331至步骤S334,以使非法人代表的用户获得使用托管私钥的授权。

步骤S331:接收所述客户端发送的申请获取私钥授权请求,向所述客户端返回申请获取私钥授权响应。

一个具体示例中,可以由需要申请获得托管私钥的授权、需要后续能够用服务端存储的私钥进行签名的该机构的用户(待授权)通过客户端发起该申请获取私钥授权请求,该申请获取私钥授权请求中可以携带该待授权用户的相关信息。

在一个实施例中,该申请获取私钥授权响应还可以包括第五验证参数。该第五验证参数用以供终端的用户进行输入,以便于下一步服务端接收到终端发送的信息时,能够进行验证。该第五验证参数可以是任何可以进行验证的参数,如随机生成的随机数,该随机数的形式可以不限,可以是随机生成的数字、汉字、字符串或者其组合等任何可能的形式。

在一个实施例中,该申请获取私钥授权响应还可以携带第四密钥生成参数。该第四密钥生成参数可以是任何客户端可用以生成客户端密钥的参数。在一个具体示例中,该第四密钥生成参数可以是一个随机数。

步骤S332:接收客户端根据申请获取私钥授权响应发送的第二密文获取请求。

在一个实施例中,在上述申请获取私钥授权响应中还携带第五验证参数时,所述第二密文获取请求还携带用户输入的第六验证参数。在终端用户输入正确的情况下,该第六验证参数应当与上述第五验证参数相同。

在一个实施例中,在上述申请获取私钥授权响应中还携带第四密钥生成参数的情况下,该第二密文获取请求中还携带客户端根据所述第四密钥生成参数以及用户识别码生成的第四客户端密钥。

客户端根据第四密钥生成参数和用户识别码生成第四客户端密钥的方式不限,例如可以用密钥推导函数KDF、哈希函数等来生成第四客户端密钥。在一个具体示例中,客户端根据所述第四密钥生成参数和用户识别码生成第四客户端私钥,并根据所述第四客户端私钥派生出第四客户端公钥。此时,第四客户端密钥包括该第四客户端公钥。

步骤S333:向所述客户端返回第二密文获取响应,第二密文获取响应中携带从存储的私钥密文授权加密结果中提取的第二密文。

在一个实施例中,可以采用任何可能的方式基于私钥密文授权加密结果确定的第二密文,以基于SM2加密方式得到私钥密文授权加密结果为例,可以是对私钥密文授权加密结果按照SM2密文格式拆分为C1、C2和C3,并将C1作为该第二密文。

步骤S334:接收所述客户端返回的第二密文解密响应,所述第二密文解密响应携带所述客户端对所述第二密文进行解密得到的第二解密结果,并在基于所述第二解密结果解密出私钥密文后,获得授权结果。

具体的对第二密文进行解密的方式本实施例不做限定。基于该第二密文解密响应携带第二解密结果,服务端可以分析该第二解密结果是否正确,从而实现客户端与服务端的相互配合来完成该托管私钥授权的申请过程。

其中,在托管私钥授权申请响应携带第四密钥生成参数、第二密文获取请求携带第四客户端密钥的情况下,在基于第二解密结果解密出私钥密文后,还可以包括步骤:

根据所述第四客户端密钥对私钥密文进行加密,获得第四私钥密文加密结果;该私钥密文可以是对私钥密文授权加密结果进行解密得到的私钥密文。

将所述第四密钥生成参数与所述第四私钥密文解密结果关联存储。

这里的对第四密钥生成参数、第四私钥密文解密结果的关联存储,可以是对服务端已经存储的私钥密文加密结果及其对应的密钥生成参数的更新。从而确保在有新的用户获得授权后,服务端总是基于终端的用户的参与生成新的私钥密文加密结果,确保服务端每次进行处理后所使用的私钥密文加密结果都不一样,防止服务端后台人员保留私钥密文来冒充用户签名,从而进一步提高了数字安全处理的安全性。

图4示出另一个实施例的基于私钥托管的数字安全处理方法的流程示意图,该实施例是以终端的处理过程为例进行说明,如图4所示,该实施例中的方法包括步骤S401至步骤S405。

步骤S401:接收服务端在接收到第一客户端发送的机构托管私钥授权请求时转发的机构私钥授权请求信息。

步骤S402:基于所述机构私钥授权请求信息向所述服务端发送第二处理请求,并接收所述服务端基于所述第二处理请求返回的第二处理响应,所述第二处理响应携带第二密钥生成参数和第三密钥生成参数。一个具体示例中的第二处理响应还携带第三验证参数。

步骤S403:根据所述第二密钥生成参数和用户识别码生成第二客户端密钥,根据所述第三密钥生成参数和所述用户识别码生成第三客户端密钥,并向所述服务端发送第一密文获取请求,所述第一密文获取请求携带所述第三客户端密钥。

一个具体示例中,在第二处理响应携带第三验证参数的情况下,在向服务端发送第一密文获取请求之前,还包括步骤:获取用户输入的第四验证参数。此时第一密文获取请求还携带该第四验证参数。

步骤S404:接收所述服务端返回的第一密文获取响应,所述第一密文获取响应携带基于存储的第二私钥密文加密结果确定的第一密文。

步骤S405:根据第二客户端密钥对第一密文进行解密,获得第一解密结果,并向服务端发送第一密文解密响应,第一密文解密响应携带第一解密结果。

本实施例中的其他技术特征可以与如上所述的实施例中的技术特征相同。

图5示出另一个实施例的基于私钥托管的数字安全处理方法的流程示意图,该实施例是以服务端的处理过程为例进行说明,如图5所示,该实施例中的方法包括步骤S501至步骤S505。

步骤S501:在接收到机构托管私钥授权请求时,向客户端转发机构私钥授权请求信息。

步骤S502:接收客户端发送的第二处理请求,根据第二处理请求向客户端返回第二处理响应,第二处理响应携带第二密钥生成参数、第三密钥生成参数。

步骤S503:接收所述客户端发送的第一密文获取请求,所述第一密文获取请求携带所述客户端基于所述第三密钥生成参数和用户识别码生成的第三客户端密钥。

步骤S504:向所述客户端返回第一密文获取响应,所述第一密文获取响应携带基于存储的第二私钥密文加密结果确定的第一密文。

步骤S505:接收客户端返回的第一密文解密响应,所述第一密文解密响应携带所述客户端对所述第一密文进行解密得到的第一解密结果,并在基于第一解密结果解密出私钥密文后,基于待授权用户公钥对私钥密文进行加密,获得私钥密文授权加密结果,并根据所述第三客户端密钥对所述私钥密文进行加密,获得第三私钥密文加密结果;将所述第三密钥生成参数与所述第三私钥密文解密结果关联存储。该私钥密文可以是对第二私钥密文加密结果进行解密得到的私钥密文。

本实施例中的其他技术特征可以与如上所述的实施例中的技术特征相同。

图6示出另一个实施例的基于私钥托管的数字安全处理方法的流程示意图,该实施例是以终端的处理过程为例进行说明,如图6所示,该实施例中的方法包括步骤S601至步骤S604。

步骤S601:向服务端发送申请获取私钥授权请求,并接收服务端返回的申请获取私钥授权响应,所述申请获取私钥授权响应还携带第四密钥生成参数。

步骤S602:根据四密钥生成参数以及用户识别码生成第四客户端密钥,并向服务端发送第二密文获取请求,第二密文获取请求还携带第四客户端密钥。

步骤S603:接收所述服务端返回的第二密文获取响应,第二密文获取响应中携带从存储的私钥密文授权加密结果中提取的第二密文。

步骤S604:对所述第二密文进行解密,获得第二解密结果,并向所述服务端发送第二密文解密响应,所述第二密文解密响应携带所述第二解密结果。

本实施例中的其他技术特征可以与如上所述的实施例中的技术特征相同。

图7示出另一个实施例的基于私钥托管的数字安全处理方法的流程示意图,该实施例是以服务端的处理过程为例进行说明,如图7所示,该实施例中的方法包括步骤S701至步骤S704。

步骤S701:接收客户端发送的申请获取私钥授权请求,向所述客户端返回申请获取私钥授权响应,所述申请获取私钥授权响应携带第四密钥生成参数。

步骤S702:接收所述客户端根据所述申请获取私钥授权响应发送的第二密文获取请求,所述第二密文获取请求携带所述客户端根据所述第四密钥生成参数以及用户识别码生成的第四客户端密钥。

步骤S703:向所述客户端返回第二密文获取响应,所述第二密文获取响应中携带从存储的私钥密文授权加密结果中提取的第二密文。

步骤S704:接收客户端返回的第二密文解密响应,第二密文解密响应携带客户端对第二密文进行解密得到的第二解密结果,并在基于第二解密结果解密出私钥密文后,获得授权结果,并根据所述第四客户端密钥对私钥密文进行加密,获得第四私钥密文加密结果;将所述第四密钥生成参数与所述第四私钥密文解密结果关联存储。该私钥密文可以是对私钥密文授权加密结果进行解密得到的私钥密文。

本实施例中的其他技术特征可以与如上所述的实施例中的技术特征相同。

如上所述,本申请的实施例将机构用户的签名私钥托管在服务端中,需要数字签名时把待签名数据发送到服务端,由服务端完成数字签名后把签名值返回给用户,从而实现数字签名。而且每进行一次签名操作,都重新加密一次私钥密文,确保只有用户的参与,才能完成签名。

本申请实施例方案在具体的技术实现过程中,包含两个过程:机构托管私钥申请和机构托管私钥签名。在企业法人代表可以授权其他用户进行签名的情况下,也可以包含四个过程:机构托管私钥申请、机构托管私钥授权、机构托管私钥获得授权和机构托管私钥签名。其中,机构托管私钥申请由机构的经办人发起、由企业法人代表确认生成。如果有其他用户需要使用结构私钥,可由该用户发起机构托管私钥授权,由企业法人代表确认授权,被授权用户获得授权。在该被授权用户获得授权后,企业法人代表和被授权用户均可执行机构托管私钥签名。

为便于说明,在下述示例的说明中,是以包含机构托管私钥申请、机构托管私钥授权、机构托管私钥获得授权和机构托管私钥签名这四个过程为例进行说明。参考图8至11所示,在下述示例中,为了便于描述,是以下述设定条件为例进行说明:三个客户端1、2、3,客户端1用于经办人提交机构托管私钥申请、用户申请机构托管私钥授权和使用机构托管私钥签名,客户端2用于法人代表确认机构托管私钥申请及授权其他用户使用机构托管私钥、以及其他用户(被授权用户)获得机构托管私钥授权,其中,客户端1可以是网页或APP应用,客户端2可以是APP应用,具有密钥生成(如SM2密钥生成)、运算及证书申请功能。可以理解,在其他的技术实现方式中,对客户端的设定可以有所不同。

结合图8至11所示,该示例中的服务端与客户端1、客户端2和密码机交互,实现机构私钥的保存和管理,实现机构用户与私钥密文的绑定及用户对私钥密文的授权使用。而密码机用以生成加密后的私钥密文并导出、导入加密后的私钥密文进行签名,其密码机只能与服务端进行通信。

基于如上所述设定,以下结合具体示例进行详细举例说明。在该些具体示例中,企业的法人代表和获得机构托管私钥授权的用户(被授权用户)先通过其使用到客户端(如客户端2)生成一对密钥对(如SM2密钥对),并申请对应的用户证书(如SM2证书)。

图8是一个具体示例中的基于私钥托管的数字安全处理的交互流程示意图,该交互流程是以机构托管私钥申请的过程为例进行说明。

如图8所示,在一个具体的机构托管私钥申请的过程中,经办人通过其使用的终端打开客户端1后,通过点击客户端1上的相关按钮、控件等发出机构私钥托管指令,客户端1接收到该机构私钥托管指令后,向服务端发送机构私钥托管请求。该机构私钥托管请求中可以携带机构私钥申请信息,该机构私钥申请信息可以包含有机构(如企业)的相关信息(如机构ID等),还可以包含经办人的相关信息,本实施例中不对机构私钥申请信息的具体类型和内容进行限定。

服务端收到该机构私钥托管请求后,对机构私钥申请信息或者机构私钥申请信息中包含的相关信息进行存储,如存储机构的相关信息以及经办人的相关家信息等。随后,服务端基于机构的相关信息(如机构ID),可以获得机构的法人代表或者对机构私钥托管具有最高决定权限的人员(为简化说明,下述各实施例均以法人代表为例进行说明)的账号,并将该机构私钥申请信息转发至法人代表的账号对应的客户端2。

客户端2在接收到服务端返回的机构私钥申请信息后,向服务端发送第一处理请求,以请求获得相关的密钥生成参数。可以理解,在该图8所对应的处理过程中,由机构的法人代表或者对机构私钥托管具有最高决定权限的人员参与该客户端2的相关处理。

服务端接收到该第一处理请求后,生成第一验证参数ry1和第一密钥生成参数rm1,该第一验证参数ry1和第一密钥生成参数rm1均可以是随机数。然后向客户端2返回第一处理响应,该第一处理响应中携带该第一验证参数ry1和第一密钥生成参数rm1。

客户端2接收到第一处理响应后,可将第一验证参数ry1进行显示,并提示用户输入验证参数ry1和用户识别码(PIN码)。客户端2的用户(法人代表或者对机构私钥托管具有最高决定权限的人员)可基于该提示输入验证参数ry1和PIN码。本示例中将用户基于提示输入的验证参数称之为第二验证参数ry1′。

随后,客户端2基于第一密钥生成参数rm1和PIN码,计算出第一客户端密钥。一个具体示例中可以采用下述方式进行,首先基于第一密钥生成参数rm1和PIN码计算出第一客户端私钥d1:d1=f1(PIN,rm1),其中,函数f1()可以是任何可用以生成密钥的函数,如密钥推导函数KDF、哈希函数等。然后基于该第一客户端私钥d1派生出第一客户端公钥P1=[d1]G,其中,G为SM2椭圆曲线的基点,(d1,P1)为一对SM2密钥对,用于加密机构私钥密文。一个具体示例中可以将该第一客户端公钥P1作为第一客户端密钥发送给服务端。

随后,客户端2利用法人代表私钥对机构私钥申请信息、用户输入的第二验证参数ry1′、第一客户端密钥P1进行签名,得到签名值s,并向服务端发送第一确认信息,该第一确认信息中可携带:授权用户证书(如法人代表或企业最高管理人的证书)、第二验证参数ry1′、第一客户端密钥P1、以及签名值s。

服务端接收到客户端2发送的第一确认信息后,先第一确认信息中携带的第二验证参数ry1′与本地存储的第一验证参数ry1是否一致,如果不一致,则返回错误结果,如果一致则继续执行后续步骤。

服务端利用授权用户证书(如法人代表证书)验证签名值s是否有效,如果无效,则返回错误结果,否则获取私钥密文。具体可以是向密码机发送私钥密文获取请求,并接收密码机返回的私钥密文D。

获得私钥密文D后,服务端利用第一客户端密钥P1加密私钥密文D,得到第一私钥密文加密结果H1,加密算法可以是任何可能的算法,如SM2加密算法。然后服务端将第一密钥生成参数rm1、授权用户证书(如法人代表证书)、签名值s、以及第一私钥密文加密结果H1进行存储。然后向客户端1和客户端2返回操作结果,该操作结果可以是成功进行了机构私钥托管的通知信息。

在上述成功将机构私钥托管到服务端后,机构的法人代表还可以进一步授权其他用户使用在服务端托管的该私钥,因此,机构的法人代表可通过客户端2授权至服务端,再由服务端对其他需要使用该私钥的用户进行授权。

图9是一个具体示例中的基于私钥托管的数字安全处理的交互流程示意图,该交互流程是以机构托管私钥授权的过程为例进行说明。

如图9所示,在一个具体的机构托管私钥授权的过程中,待授权用户、企业法人、经办人或其他用户等用户通过其使用的终端打开客户端1后,通过点击客户端1上的相关按钮、控件等发出机构托管私钥授权指令,客户端1在接收到该机构托管私钥授权指令后,向服务端发送机构托管私钥授权请求。该机构托管私钥授权请求中可以携带私钥授权申请信息,该私钥授权申请信息可以包含有机构(如企业)的相关信息(如机构ID等),还可以包含待授权用户证书(法人代表证书),本实施例中不对私钥授权申请信息的具体类型和内容进行限定。

服务端收到该机构托管私钥授权请求后,对私钥授权申请信息或者私钥授权申请信息中包含的相关信息进行存储,如存储待授权用户证书。随后,服务端基于机构的相关信息(如机构ID),可以获得机构的法人代表的账号,并将该机构托管私钥授权请求转发至法人代表的账号对应的客户端2。

客户端2接收到该机构托管私钥授权请求后,向服务端发送第二处理请求,以请求获得相关的密钥生成参数。可以理解,在该图9所对应的处理过程中,由机构的法人代表参与该客户端2的相关处理。

服务端接收到该第二处理请求后,从存储设备中读取第二密钥生成参数rm2。其中,该第二密钥生成参数rm2为机构托管私钥生成、授权、法人代表使用后最新存储的密钥生成参数。假设上述机构托管私钥生成后没有执行任何的授权、法人代表使用等过程,也没有采用其他的是对存储的密钥生成参数进行更新,则该第二密钥生成参数rm2应当是上述存储的的第一密钥生成参数rm1。

此外,服务端还生成第三验证参数ry2和第三密钥生成参数rm3,该第三验证参数ry2和第三密钥生成参数rm3均可以是随机数。然后向客户端2返回第二处理响应,该第一处理响应中携带该第三验证参数ry2、第二密钥生成参数rm2和第三密钥生成参数rm3。

客户端2接收到第二处理响应后,可将第三验证参数ry2进行显示,并提示用户输入验证参数ry2和用户识别码(PIN码)。客户端2的用户(如法人代表)可基于该提示输入验证参数ry2和PIN码。本示例中将用户基于提示输入的验证参数称之为第四验证参数ry2′。

随后,客户端2基于第二密钥生成参数rm2和PIN码,计算出第二客户端密钥。一个具体示例中可以采用下述方式进行,基于第二密钥生成参数rm2和PIN码计算出第二客户端私钥d2:d2=f1(PIN,rm2),其中,函数f1()可以是任何可用以生成密钥的函数,如密钥推导函数KDF、哈希函数等。

另一方面,客户端2还基于第三密钥生成参数rm3和PIN码,计算出第三客户端密钥。一个具体示例中可以采用下述方式进行,基于第三密钥生成参数rm3和PIN码计算出第三客户端私钥d3:d3=f1(PIN,rm3),其中,函数f1()可以是任何可用以生成密钥的函数,如密钥推导函数KDF、哈希函数等。然后基于该第三客户端私钥d3派生出第三客户端公钥P3=[d3]G,其中,G为SM2椭圆曲线的基点,(d3,P3)为一对SM2密钥对,用于加密机构私钥密文。一个具体示例中可以将该第三客户端公钥P3作为第三客户端密钥发送给服务端。

随后,客户端2利用法人代表私钥对用户输入的第四验证参数ry2′、第三密钥生成参数rm3、第三客户端密钥P3、待授权用户证书进行签名,得到签名值s,并向服务端发送第一密文获取请求,第一密文获取请求中携带:用户输入的第四验证参数ry2′、第三密钥生成参数rm3、第三客户端密钥P3以及签名值s。

服务端接收到客户端2发送的第一密文获取请求后,先验证第一密文获取请求中携带的第四验证参数ry2′与本地存储的第三验证参数ry2是否一致,如果不一致,则返回错误结果,如果一致则继续执行后续步骤。

服务端从存储设备读取法人代表证书,利用法人代表证书验证签名值s是否有效,如果无效,则返回错误结果,否则从存储设备读取存储的第二私钥密文加密结果H2。该第二私钥密文加密结果H2为机构托管私钥生成、授权、法人代表使用后最新存储的私钥密文加密结果。假设上述机构托管私钥生成后没有执行任何的授权、法人代表使用等过程,也没有采用其他的是对存储的密钥生成参数进行更新,则该第二私钥密文加密结果H2应当是上述存储的第一私钥密文加密结果H1。

以采用SM2进行加密得到该私钥密文加密结果为例,可按照SM2密文格式将第二私钥密文加密结果H2拆分成C1、C2和C3,并向客户端2返回第一密文获取响应,该第一密文获取响应中携带第一密文C1。

客户端2接收到该第一密文获取响应后,采用上述生成的第二客户端私钥d2:d2=f1(PIN,r2)对该第一密文进行解密,得到第一解密结果(x2,y2)=[d2]C1,然后向服务端返回第一密文解密响应,该第一密文解密响应携带第一解密结果x2||y2。

服务端接收到客户端2返回的第一密文解密响应,先验证该第一密文解密响应中的第一解密结果的正确性,一个具体示例中该可采用下述方式进行:计算t2=KDF(x2||y2),D=C2⊕t2,u=SM3(x2||D||y2),D为解密后的机构托管私钥密文,然后验证u与C3是否一致,如果不一致,则返回错误结果,一致则继续执行后续步骤。

服务端利用待授权用户的公钥(可以是从证书中读取的公钥,也可以是预先存储的其他公钥)加密第二私钥密文加密结果H2对应的私钥密文D,得到私钥密文授权加密结果H0,加密算法可以采用SM2。

此外,服务端还利用第三客户端密钥P3加密私钥密文D,得到第三私钥密文的加密结果H3,加密算法可以采用SM2。

随手,服务端存储第三密钥生成参数rm3、签名值s、私钥密文授权加密结果H0、第三私钥密文加密结果H3;且服务端不再存储上述第二密钥生成参数rm2和第二私钥密文加密结果H2。然后向客户端1和客户端2返回操作结果,具体可以是成功进行的机构私钥授权的结果。

在上述法人代表成功进行机构托管私钥授权后,机构的其他用户则可以从服务端获得授权,以能够使用托管的结构私钥也能够执行签名过程。

图10是另一个具体示例中的基于私钥托管的数字安全处理的交互流程示意图,该交互流程是以机构托管私钥获得授权的过程为例进行说明。

如图10所示,在一个具体的机构托管私钥获得授权的过程中,需要获得授权的待授权用户通过其使用的终端打开客户端2后,通过点击客户端2上的相关按钮、控件等发出申请获取私钥授权指令,客户端2在接收到该申请获取私钥授权指令后,向服务端发送申请获取私钥授权请求。该申请获取私钥授权请求中可以携带该待授权用户的相关信息。

服务端收到该申请获取私钥授权请求后,生成第五验证参数ry3和第四密钥生成参数rm4,该第五验证参数ry3和第四密钥生成参数rm4均可以是随机数。然后向客户端2返回申请获取私钥授权响应,该申请获取私钥授权响应中携带该第五验证参数ry3和第四密钥生成参数rm4。

客户端2接收到申请获取私钥授权响应后,可将第五验证参数ry3进行显示,并提示用户输入验证参数ry3和用户识别码(PIN码)。客户端2的待授权用户可基于该提示输入验证参数ry3和PIN码。本示例中将用户基于提示输入的验证参数称之为第六验证参数ry3′。

随后,客户端2基于第四密钥生成参数rm4和PIN码,计算出第四客户端密钥。一个具体示例中可以采用下述方式进行,基于第四密钥生成参数rm4和PIN码计算出第四客户端私钥d4:d4=f1(PIN,rm4),其中,函数f1()可以是任何可用以生成密钥的函数,如密钥推导函数KDF、哈希函数等。然后基于该第四客户端私钥d4派生出第四客户端公钥P4=[d4]G,其中,G为SM2椭圆曲线的基点,(d4,P4)为一对SM2密钥对,用于加密机构私钥密文。一个具体示例中可以将该第四客户端公钥P4作为第四客户端密钥发送给服务端。

随后,客户端2向服务端发送第二密文获取请求,该第二密文获取请求中携带用户输入的第六验证参数ry3′和第四客户端密钥P4。

服务端接收到客户端2发送的第二密文获取请求后,先验证第二密文获取请求中携带的第六验证参数ry3′与本地存储的第五验证参数ry3是否一致,如果不一致,则返回错误结果,如果一致则继续执行后续步骤。

服务端从存储设备读取存储的私钥密文授权加密结果H0,以采用SM2进行加密得到该私钥密文授权加密结果H0为例,可按照SM2密文格式将私钥密文授权加密结果H0拆分成C1、C2和C3,并向客户端2返回第二密文获取响应,该第二密文获取响应中携带第二密文C1。

客户端2接收到该第二密文获取响应后,利用待授权用户的私钥K1,对第二密文C1进行解密,得到第二解密结果(x2,y2)=[K1]C1。其中,该私钥K1与机构托管私钥授权中进行中加密的待授权用户的公钥对应。然后向服务端返回第二密文解密响应,该第二密文解密响应携带第二解密结果x2||y2。

服务端接收到客户端2返回的第二密文解密响应,先验证该第二密文解密响应中的第二解密结果的正确性,一个具体示例中该可采用下述方式进行:计算t2=KDF(x2||y2),D=C2⊕t2,u=SM3(x2||D||y2),D为解密后的机构托管私钥密文,然后验证u与C3是否一致,如果不一致,则返回错误结果,一致则继续执行后续步骤;

服务端还利用第四客户端密钥P4加密私钥密文D,得到第四私钥密文加密结果H4,加密算法可以采用SM2。随后,服务端存储第四密钥生成参数rm4、以及第四私钥密文加密结果H4;且服务端不再存储之前的私钥密文加密结果和对应的密钥生成参数(如上述第二密钥生成参数rm2和第二私钥密文加密结果H2)。然后向客户端2返回操作结果,具体可以是成功进行了授权的结果。

基于本申请方案,结构的法人代表以及获得授权的用户(被授权用户),可以采用服务端托管的机构私钥进行签名。图11示出了另一个具体示例中的基于私钥托管的数字安全处理的交互流程示意图,该交互流程是以签名过程为例进行说明。

结合图11所示,在一个具体的数字签名的过程中的过程中,需要进行数字签名的用户(机构的法人代表或者被授权用户)通过其使用的终端打开客户端1后,通过点击客户端1上的相关按钮、控件等发出签名指令。客户端1在接收到该签名指令后,向服务端发送签名请求。该签名请求中可以携带需要进行签名的待签名数据。

服务端收到该签名请求后,从存储设备中读取第五密钥生成参数rm5(若用户为企业法人,rm5为机构托管私钥生成、授权、签名过程中,法人代表使用后最新存储的密钥生成参数;若用户为被授权用户,rm5为机构托管私钥获取授权、签名过程中,被授权用户使用后最新存储的密钥生成参数),并生成第七验证参数ry4、和第六密钥生成参数rm6。然后向服务端返回签名响应,该签名响应中携带第七验证参数ry4、第五密钥生成参数rm5和第六密钥生成参数rm6。

客户端1接收到第二处理响应后,可将第七验证参数ry4进行显示,并提示用户输入验证参数ry4和用户识别码(PIN码)。客户端1的用户(法人代表或被授权用户)可基于该提示输入验证参数ry4和PIN码。本示例中将用户基于提示输入的验证参数称之为第八验证参数ry4′。

随后,客户端2基于第五密钥生成参数rm5和PIN码,计算出第五客户端密钥。一个具体示例中可以采用下述方式进行,基于第五密钥生成参数rm5和PIN码计算出第五客户端私钥d5:d5=f1(PIN,rm5),其中,函数f1()可以是任何可用以生成密钥的函数,如密钥推导函数KDF、哈希函数等。

另一方面,客户端2还基于第六密钥生成参数rm6和PIN码,计算出第六客户端密钥。一个具体示例中可以采用下述方式进行,基于第六密钥生成参数rm6和PIN码计算出第六客户端私钥d6:d6=f1(PIN,rm6),其中,函数f1()可以是任何可用以生成密钥的函数,如密钥推导函数KDF、哈希函数等。然后基于该第六客户端私钥d6派生出第六客户端公钥P6=[d6]G,其中,G为SM2椭圆曲线的基点,(d6,P6)为一对SM2密钥对,用于加密机构私钥密文。一个具体示例中可以将该第六客户端公钥P6作为第六客户端密钥发送给服务端。

然后,客户端1向服务端发送第三密文获取请求,第三密文获取请求中携带:用户输入的第八验证参数ry4′、第六客户端密钥P6,在有签名的情况下,还可以携带签名值s。

服务端接收到客户端1发送的第三密文获取请求后,先验证第三密文获取请求中携带的第八验证参数ry4′与本地存储的第七验证参数ry4是否一致,如果不一致,则返回错误结果,如果一致则继续执行后续步骤。

服务端从存储设备读取存储的第五私钥密文加密结果H5(若用户为企业法人,H5为机构托管私钥生成、授权、签名过程中,法人代表使用后最新存储的私钥密文加密结果;若用户为被授权用户,H5为机构托管私钥获取授权、签名过程中,被授权用户使用后最新存储的私钥密文加密结果)。以采用SM2进行加密得到该私钥密文加密结果为例,可按照SM2密文格式将第五私钥密文加密结果H5拆分成C1、C2和C3,并向客户端2返回第三密文获取响应,该第三密文获取响应中携带第三密文C1。

客户端1接收到该第三密文获取响应后,采用上述生成的第五客户端私钥d5:d5=f1(PIN,rm5)对该第三密文进行解密,得到第三解密结果(x2,y2)=[d5]C1,然后向服务端返回第三密文解密响应,该第一密文解密响应携带第三解密结果x2||y2。

服务端接收到客户端1返回的第三密文解密响应,可先验证该第三密文解密响应中的第三解密结果的正确性,一个具体示例中该可采用下述方式进行:计算t2=KDF(x2||y2),u=SM3(x2||D||y2),D为解密后的机构托管私钥密文,然后验证u与C3是否一致,如果不一致,则返回错误结果,一致则继续执行后续步骤。

服务端端基于解密后的私钥密文D对待签名数据进行签名,获得数字签名结果。一个具体示例中可以结合密码机来完成签名过程,具体可以是:服务端向密码机发送待签名数据和私钥密文D,由密码机采用该私钥密文D对待签名数据进行签名,获得数字签名结果,并返回给服务端。服务端自行计算得出数字签名结果或者获得密码机返回的数字签名结果后,可将该数字签名结果返回给客户端1,从而完成数字签名过程。

服务端还利用第六客户端密钥P6加密私钥密文D,得到第六私钥密文加密结果H6,加密算法可以采用SM2。随后,服务端存储第六密钥生成参数rm6、第六私钥密文加密结果H6;且服务端不再存储之前的私钥密文加密结果和对应的密钥生成参数(如上述第五密钥生成参数r5和第五私钥密文加密结果H5)。

基于如上所述的示例,在一个实施例中还提供一种计算机设备,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现如上述各实施例中的任意一个实施例的方法。

一个实施例中的计算机设备可以是图1中的终端或者服务端,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和输入装置。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现基于私钥托管的数字安全处理方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行基于私钥托管的数字安全处理方法。本领域技术人员可以理解,此处所描述的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性的计算机可读取存储介质中,如本申请实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

据此,在一个实施例中还提供一种存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现如上述各实施例中的任意一个实施例的基于私钥托管的数字安全处理方法。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对本领域普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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