基于分布式私钥的处理方法、系统、计算机设备及存储介质与流程

文档序号:15296721发布日期:2018-08-31 19:27阅读:146来源:国知局

本申请涉及密码学技术领域,特别是涉及一种基于分布式私钥的处理方法、基于分布式私钥的处理系统、计算机设备和计算机存储介质。



背景技术:

随着移动互联网的发展,在移动终端实现数字签名成为迫切需求。由于移动终端的操作系统是可修改的非可信运行环境,为了有效保护移动终端中用于签名的用户私钥,很多研究者提出了基于分布式密钥的协同生成电子签名的方案。在该方案中,在通信双方分别存储部分私钥,两方联合才能对消息进行签名或解密等操作,通信双方均无法获取到对方私钥的任何信息。但在实施协同签名的技术方案时,必须采取手段来实现对客户端和服务端的私钥分量的有效保护,以抵抗监听信道、客户端木马等攻击手段。



技术实现要素:

基于此,有必要提供一种基于分布式私钥的处理方法、基于分布式私钥的处理系统、计算机设备和计算机存储介质。

一种基于分布式私钥的处理方法,所述方法包括步骤:

接收客户端发送的消息;

在所述消息满足服务端私钥分量使用条件时,向密码机发送控制指令,所述控制指令携带关联信息,所述控制指令用以指示所述密码机根据所述关联信息以及所述密码机的对称密钥,生成服务端私钥分量,所述关联信息包括服务端平台标识。

一种基于分布式私钥的处理方法,所述方法包括步骤:

客户端生成客户端私钥分量,获取用户识别码,基于所述用户识别码生成客户端临时密钥,并采用所述客户端临时密钥对所述客户端私钥分量加密,获得客户端私钥分量密文,并向服务端发送消息;

服务端接收客户端发送的消息,并在所述消息满足服务端私钥分量使用条件时,向密码机发送控制指令,所述控制指令携带关联信息,所述控制指令用以指示所述密码机根据所述关联信息以及所述密码机的对称密钥,生成服务端私钥分量,所述关联信息包括服务端平台标识。

一种基于分布式私钥的处理方法,所述方法包括步骤:

客户端获取用户识别码和客户端私钥分量密文,基于所述用户识别码生成客户端临时密钥,并采用所述客户端临时密钥对所述客户端私钥分量密文解密,获得客户端私钥分量,并向服务端发送消息;

服务端接收客户端发送的消息,并在所述消息满足服务端私钥分量使用条件时,向密码机发送控制指令,所述控制指令携带关联信息,所述控制指令用以指示所述密码机根据所述关联信息以及所述密码机的对称密钥,生成服务端私钥分量,所述关联信息包括服务端平台标识。

一种基于分布式私钥的处理系统,所述系统包括客户端和服务端;

所述客户端生成客户端私钥分量,获取用户识别码,基于所述用户识别码生成客户端临时密钥,并采用所述客户端临时密钥对所述客户端私钥分量加密,获得客户端私钥分量密文,并向服务端发送消息;

所述服务端接收客户端发送的消息,并在所述消息满足服务端私钥分量使用条件时,向密码机发送控制指令,所述控制指令携带关联信息,所述控制指令用以指示所述密码机根据所述关联信息以及所述密码机的对称密钥,生成服务端私钥分量,所述关联信息包括服务端平台标识。

一种基于分布式私钥的处理系统,所述系统包括客户端和服务端;

所述客户端获取用户识别码和客户端私钥分量密文,基于所述用户识别码生成客户端临时密钥,并采用所述客户端临时密钥对所述客户端私钥分量密文解密,获得客户端私钥分量,并向服务端发送消息;

所述服务端接收客户端发送的消息,并在所述消息满足服务端私钥分量使用条件时,向密码机发送控制指令,所述控制指令携带关联信息,所述控制指令用以指示所述密码机根据所述关联信息以及所述密码机的对称密钥,生成服务端私钥分量,所述关联信息包括服务端平台标识。

一种计算机设备,包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤,或者实现如上所述方法中的客户端或服务端的处理步骤。

一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤,或者实现如上所述方法中的客户端或服务端的处理步骤。

根据如上所述的实施例的方案,服务端在需要使用到服务端私钥分量时,通过密码机的对称密钥对服务端平台标识进行加密生成服务端私钥分量,从而无需在密码机存储海量密钥,只需在密码机存储对称密钥,就可以为众多用户产生对应的服务端密钥分量,且避免了存储密钥被第三方非法获取的可能性,加强了分布式私钥的私钥分量的安全性。

附图说明

图1为一个实施例中的基于分布式私钥的处理方法的流程示意图;

图2为另一个实施例中的基于分布式私钥的处理方法的流程示意图;

图3为一个实施例中的基于分布式私钥的处理方法中的处理流程示意图;

图4为另一个实施例中的基于分布式私钥的处理方法的流程示意图;

图5为一个实施例中的基于分布式私钥的处理方法中的处理流程示意图;

图6为另一个实施例中的基于分布式私钥的处理系统的模块示意图;

图7是一个实施例中的计算机设备的内部结构示意图。

具体实施方式

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

本申请实施例的方案在具体的技术应用中,涉及到两个设备,将其记为设备一和设备二,设备一具有设备一私钥分量,设备二具有设备二私钥分量,在协同签名和解密时,设备一基于设备一私钥分量、设备二基于设备二私钥分量,二者协同完成签名和解密的过程。在一些实施例中,设备一可以是终端,设备二可以是服务器,从而实现终端与服务器之间的协同签名和解密的过程。设备一、设备二具体可以是台式终端、移动终端、智能穿戴式设备以及其他的可以或者用以协同签名或解密的设备,在设备二为服务器时,其可以是独立的服务器或者是多个服务器组成的服务器集群。

如图1所示,一个实施例中的基于分布式私钥的处理方法包括下述步骤s101与步骤s102,该方法可应用于服务器。

步骤s101:接收客户端发送的消息。

其中,客户端发送的消息可以是任何可能的消息,只要客户端发送的消息能够指示或者触发服务端执行与服务端私钥分量相关的操作。在一个实施例中,该客户端发送的该消息可以是在指示服务端生成服务端私钥密钥的过程中发送的消息,也可以是在执行数字签名或者解密的过程中发送的消息。在不同的技术场景中,该消息中包含的信息可以有所不同。

在一个实施例中,客户端发送的该消息中可以仅包含能够指示或者触发服务端执行与服务端私钥分量相关的操作即可。

在一个实施例中,客户端发送的该消息中可以包括用户标识。从而通过在该消息中包括用户标识,服务端后续可以基于该用户标识生成与该用户标识对应的服务端私钥分量,从而可以为不同的用户生成不同的服务端私钥分量。

在一个实施例中,客户端发送的该消息中可以包括密钥标识。从而通过在该消息中包括密钥标识,服务端后续可以基于该密钥标识生成与该密钥标识对应的服务端私钥分量,从而可以基于不同的密钥标识生成不同的服务端私钥分量,生成的不同的服务端私钥分量,可以用到不同的用途。

在一个实施例中,客户端发送的该消息中也可以同时包括用户标识和密钥标识。从而通过在该消息中包括用户标识和密钥标识,服务端后续可以基于该用户标识和密钥标识,生成与该用户标识对应的不同的服务端私钥分量,生成的不同的服务端私钥分量,可以用于对应于该用户标识的不同的用途。

步骤s102:在所述消息满足服务端私钥分量使用条件时,向密码机发送控制指令,所述控制指令携带关联信息,所述控制指令用以指示所述密码机根据所述关联信息以及所述密码机的对称密钥,生成服务端私钥分量,所述关联信息包括服务端平台标识。

其中,该服务端私钥分量使用条件可以做不同的设定,只要该消息能够触发服务端向密码机发送上述控制指令即可。

如在一个实施例中,该消息可以是客户端与服务端协同生成服务端私钥分量的过程中的相关消息。

在另一个实施例中,该消息可以是客户端与服务端协同加密、签名或者解密的过程中的相关消息。以进行签名为例,该控制指令可以为签名指令,该签名指令用于指示密码机根据关联信息以及密码机的对称密钥,生成服务端私钥分量,并基于服务端私钥分量进行数字签名,进而可以在执行数字签名的过程中,指示密码机生成服务端私钥分量。从而,服务端实在执行数字签名的过程中完成服务端私钥分量的生成过程,服务端所在的服务器和密码机无需存储生成的服务端私钥分量,在服务端需要与多个不同的用户终端的用户协同签名的情况下,服务端和密码机无需存储海量的服务端私钥分量,进一步提高了安全性。

在一个实施例中,在上述客户端发送的消息中包括用户标识时,该关联信息还可以包括该用户标识。此时,基于该控制指令,密码机是基于服务端平台标识、用户标识以及密码机的对称密钥,生成服务端私钥分量。从而,服务端可以基于该用户标识生成与该用户标识对应的服务端私钥分量,据此可以为不同的用户生成不同的服务端私钥分量。

在一个实施例中,在上述客户端发送的消息中包括密钥标识时,该关联信息还包括该密钥标识。此时,基于该控制指令,密码机是基于服务端平台标识、密码标识以及密码机的对称密钥,生成服务端私钥分量。从而,服务端可以基于不同的密钥标识生成不同的服务端私钥分量,生成的不同的服务端私钥分量,可以用到不同的用途。

在一个实施例中,在客户端发送的该消息中同时包括用户标识和密钥标识时,该关联信息还同时包括该用户标识和密钥标识。此时,基于该控制指令,密码机是基于服务端平台标识、用户标识、密码标识以及密码机的对称密钥,生成服务端私钥分量。从而,服务端可以基于该用户标识和密钥标识,生成与该用户标识对应的不同的服务端私钥分量,生成的不同的服务端私钥分量,可以用于对应于该用户标识的不同的用途。

上述生成的服务端私钥分量,可以限定为不能以明文形式从密码机导出,也可以限定为不允许被存储在非挥发性存储部件,从而进一步加强对服务端私钥分量的保护,进一步加强安全性。

上述服务端平台标识,可以基于任何可能的方式确定。在一个实施例中,在上述向密码机发送控制指令之前,还可以包括步骤:生成服务端平台标识。生成服务端平台标识可以采用任何可能的方式进行,如在一个实施例中,可以通过随机数生成器生成一个随机数,并将该随机数作为该服务端平台标识,从而加强获得的服务端平台标识的随机性,以加强基于服务端平台标识生成的服务端私钥分量的随机性,进一步加强。在另一个实施例中,可以基于服务端的相关信息,采用一定的算法生成该服务端平台标识。

在一个实施例中,在上述发送控制指令之后,还可以包括步骤:

向密码机发送销毁指令,该销毁指令用以指示所述密码机销毁内存中的服务端私钥分量副本。从而,在每一次使用服务端私钥分量之后,都销毁内存中的服务端私钥分量的副本,一旦销毁之后,就需要执行客户端私钥分量配对的认证过程,才能再次恢复服务端私钥分量,避免了非授权的服务端应用通过发送指令给密码机使用某个用户的服务端私钥分量,以进一步加强安全性。

以下结合其中一个示例进行详细举例说明。在本示例中,涉及服务端私钥分量的生成、服务端私钥分量的使用以及服务端私钥分量的保护。

为了生成服务端私钥分量,服务端生成一个服务端平台标识platformid,且在密码机内部生成并存储一个对称加密算法的对称密钥x。一个就具体示例中的服务端私钥分量的生成流程可以是如下所述:

接收客户端发送的用户标识userid和密钥标识keyid,该用户标识userid用以标识不同的用户,该密钥标识keyid用以区分不同的密钥,一个密钥标识对应一个客户端私钥分量和一个服务端私钥分量。

随后,服务端调用加密机接口,加密机内部基于服务端平台标识platformid、用户标识userid、密钥标识keyid以及对称密钥x计算出长度为klen比特的服务端私钥分量d2,用公式可以表示为:

seed=encrypt(platformid||userid||keyid,x);

2=kdf(seed,klen)。

其中,encrypt为对称加密算法,其采用对称密钥x进行加密,所采用的算法可以是任何可能的对称加密算法,如des(dataencryptionalgorithm,数据加密算法)、aes(advancedencryptionstandard,高级加密标准)、sm4(分组密码算法)等。kdf为密钥派生算法,具体可以是pkcs#5标准定义的函数,或者《gm/t0003.4-2012sm2椭圆曲线公钥密码算法第4部分:公钥加密算法》中定义的密钥派生算法等。

在使用服务端私钥分量的过程中,需恢复出服务端私钥分量,以使用服务端私钥分量。恢复出服务端私钥分量的过程与上述生成服务端私钥分量的过程完全一致。在具体的技术应用场景中,可以无需专门的流程生成服务端私钥分量,而是在需要使用服务端私钥分量时,再通过密码机生成服务端私钥分量,从而服务端和密码机无需存储海量的密钥数据。

以数字签名为例,可是在执行数字签名的过程中,服务端在获得客户端发送的用户标识userid和密钥标识keyld后,服务端调用加密机接口,加密机内部基于服务端平台标识platformid、用户标识userid、密钥标识keyid以及对称密钥x计算出长度为klen比特的服务端私钥分量d2,并基于生成的服务端私钥分量d2完成数字签名过程。

其中,为了形成对私钥分量的有效保护,在具体实现时,可限定并确保计算出的服务端私钥分量d2不能以明文形式导出密码机外部,且限定并确保密码机产生的服务端私钥分量d2不允许存储在非挥发性存储部件。另一方面,在客户端与服务端协同执行数字签名的阶段,服务端通过发送指令给密码机,在密码机内部根据x计算出私钥分量d2,完成协同签名的步骤。另一方面,还可以在是无论计算公钥还是进行协同签名,都在密码机使用服务端私钥分量d2之后,服务端通过向密码机发送指令来销毁密码机内存中的服务端私钥分量的副本。

一个实施例中的基于分布式私钥的处理方法涉及客户端与服务端,其中,在具体技术实现时,客户端可以是指设置在用户终端上的应用程序,服务端可以是指设置在服务器的应用程序,如图2所示,一个实施例中的涉及客户端与服务端的方法包括下述步骤s201至步骤s202,该实施例是结合客户端生成私钥分量的场景为例进行说明。

步骤s201:客户端生成客户端私钥分量,获取用户识别码,基于所述用户识别码生成客户端临时密钥,并采用所述客户端临时密钥对所述客户端私钥分量加密,获得客户端私钥分量密文,并向服务端发送消息。

步骤s202:服务端接收客户端发送的消息,并在所述消息满足服务端私钥分量使用条件时,向密码机发送控制指令,所述控制指令携带关联信息,所述控制指令用以指示所述密码机根据所述关联信息以及所述密码机的对称密钥,生成服务端私钥分量,所述关联信息包括服务端平台标识。

其中,步骤s202中的服务端的处理过程可以与上述图1所示实施例中的服务器的处理过程相同。

上述步骤s201可在用户终端设备执行,在一个实施例中,如图3所示,该步骤s201可以包括下述步骤s2011至步骤s2013。

步骤s2011:获取用户识别码,基于所述用户识别码生成客户端临时密钥。

该用户识别码在一个实施例中可以是用户的pin(personalidentificationnumber,个人识别码),该用户识别码可以基于用户输入获得。

在基于用户识别码生成客户端临时密钥时,可以采用任何可能的方式进行。一个实施例中,可以是以获取的用户输入的用户识别码为输入参数,通过执行密钥派生算法得到该客户端临时密钥。

在一个实施例中,在上述获取用户输入的用户识别码之前,还可以包括步骤:获取设备硬件参数、设备软件参数以及设备身份标识,并基于设备硬件参数、设备软件参数以及设备身份标识生成设备指纹信息。

此时,基于用户识别码生成客户端临时密钥的步骤包括:基于用户识别码和设备指纹信息生成客户端临时密钥。一个示例中,可以获取的用户输入的用户识别码和设备指纹信息为输入参数,通过执行密钥派生算法得到客户端临时密钥。

其中,在一个示例中,在上述获取设备身份标识之前,还包括步骤:用随机数生成器生成设备身份标识,并存储生成的该设备身份标识,该设备身份标识可以存储在非挥发性存储空间,以方便后续应用过程中进行读取。

在一个实施例中,在获取用户输入的用户识别码之前,还包括步骤:生成盐值,并存储盐值(在密码加密过程中添加的额外的值),该盐值可以存储在非挥发性存储空间,以方便后续应用过程中进行读取。

此时,上述基于用户识别码生成客户端临时密钥的步骤包括:基于用户识别码和该盐值生成客户端临时密钥。一个具体示例中,可以是以获取的用户输入的用户识别码以及该盐值为输入参数,通过执行密钥派生算法得到该客户端临时密钥。从而,通过引入盐值,可以有利于抵抗彩虹表攻击,进一步加强安全性。

在一个实施例中,在获取用户输入的用户识别码之前,还包括步骤:生成盐值,存储所述盐值;并获取设备硬件参数、设备软件参数以及设备身份标识,基于设备硬件参数、所述设备软件参数以及所述设备身份标识生成设备指纹信息。

此时,上述基于用户识别码生成客户端临时密钥的步骤包括:基于所述用户识别码、所述盐值和所述设备指纹信息生成所述临时密钥。一个具体示例中,可以是以获取的用户输入的用户识别码、设备指纹信息以及该盐值为输入参数,通过执行密钥派生算法得到该客户端临时密钥。

在一个实施例中,在获取用户输入的用户识别码之前,还可以包括步骤:生成随机整数,并存储所述随机整数,该随机整数可以存储在非挥发性存储空间,以方便后续应用过程中进行读取。

此时,上述基于用户识别码生成客户端临时密钥的步骤包括:基于用户识别码,执行随机整数次的密钥派生算法生成客户端临时密钥。例如,以用户识别码为输入参数,执行随机整数次的密钥派生算法生成客户端临时密钥。从而,通过引入随机整数,可以有利于抵抗彩虹表攻击,进一步加强安全性。

在一个实施例中,在获取用户输入的用户识别码之前,还可以包括步骤:生成盐值和随机整数,并存储盐值和随机整数。

此时,基于用户识别码生成客户端临时密钥的步骤包括:基于用户识别码和盐值,执行随机整数次的密钥派生算法生成客户端临时密钥。

在一个实施例中,在生成了随机整数、且是以用户识别码和设备指纹信息为输入参数生成客户端临时密钥的情况下,是以用户识别码和设备指纹信息为输入参数,执行随机整数次的密钥派生算法生成客户端临时密钥。在一个实施例中,在同时生成了盐值和随机整数,基于用户识别码、盐值和设备指纹信息生成所述临时密钥的情况下,可以是以获取的用户输入的用户识别码、设备指纹信息以及该盐值为输入参数,执行随机整数次的密钥派生算法生成客户端临时密钥。

在一个实施例中,在上述获取用户输入的用户识别码之前,还可以包括步骤:获取用户输入的口令认证信息和验证码;验证口令认证信息和验证码,并在验证通过时,显示用户识别码输入界面。从而,可以使用口令认证和验证码的双重认证,在验证正确的情况下,才允许输入用户识别码。在一个具体示例中,还可以对口令的长度和字符类型进行限定,如口令的长度必须大于第一预定长度,字符类型必须包含大写字母、小写字母和数字等等,以实施高强度验证。

另一方面,在一个实施例中,还可以在连续第一预定次数口令认证信息和验证码验证不通过时,锁定该验证口令认证信息和验证码机制,即限制不允许用户继续执行响应的流程,并在等待第一时间段后解锁,并在解锁后连续第二预定次数口令认证信息和验证码验证不通过时,锁定该验证口令认证信息和验证码机制,并在等待第二时间段后解锁,且第二时间段大于第一时间段,以此类推。

步骤s2012:生成客户端私钥分量。

客户端私钥分量的生成方式采用任何可能的方式进行。在一个实施例中,可以是采用随机数发生器生成随机数,并将该随机数作为该客户端私钥分量。

步骤s2013:采用客户端临时密钥对客户端私钥分量加密,获得客户端私钥分量密文。

在采用客户端临时密钥对客户端私钥分量进行加密时,可以采用任何可能的加密方式进行。如该客户端临时密钥可以是作为对称密钥,通过客户端临时密钥对客户端私钥分量执行对称加密,获得客户端私钥密文。一个实施例中,获得的客户端私钥密文可以保存在客户端的隔离容器内部的非挥发性存储空间。

在一个实施例中,在数字签名过程中,在基于客户端私钥分量进行数字签名后,还可以销毁内存中的客户端私钥分量的副本。以避免内存中的客户端私钥分量的副本被他人获知的可能性,以进一步加强安全性。

在一个实施例中,在进行数字签名之前,还可以包括步骤:验证服务端私钥分量与客户端私钥分量是否匹配,从而避免非授权使用服务端私钥分量。

如图4所示,一个实施例中的涉及客户端与服务端的方法包括下述步骤s401至步骤s402,该实施例是结合客户端解密得到客户端私钥分量的场景为例进行说明。

步骤s401:客户端获取用户识别码和客户端私钥分量密文,基于所述用户识别码生成客户端临时密钥,并采用所述客户端临时密钥对所述客户端私钥分量密文解密,获得客户端私钥分量,并向服务端发送消息。

步骤s402:服务端接收客户端发送的消息,并在所述消息满足服务端私钥分量使用条件时,向密码机发送控制指令,所述控制指令携带关联信息,所述控制指令用以指示所述密码机根据所述关联信息以及所述密码机的对称密钥,生成服务端私钥分量,所述关联信息包括服务端平台标识。

其中,步骤s402中的服务端的处理过程可以与上述图1所示实施例中的服务器的处理过程相同。

上述步骤s401可在用户终端设备执行,在一个实施例中,该步骤s401可以包括下述步骤s4011至步骤s4012。

步骤s4011:获取用户识别码和客户端私钥分量密文,基于所述用户识别码生成客户端临时密钥。

其中,该客户端私钥密文可以直接从存储空间读取。该用户识别码在一个实施例中可以是用户的pin(personalidentificationnumber,个人识别码),该用户识别码可以基于用户输入获得。

在基于用户识别码生成客户端临时密钥时,可以采用任何可能的方式进行。一个实施例中,可以是以获取的用户输入的用户识别码为输入参数,通过执行密钥派生算法得到该客户端临时密钥。

在一个实施例中,在上述基于所述用户识别码生成客户端临时密钥之前,还可以包括步骤:读取设备硬件参数、设备软件参数以及设备身份标识,并基于设备硬件参数、设备软件参数以及设备身份标识生成设备指纹信息。

此时,基于用户识别码生成客户端临时密钥的步骤包括:基于用户识别码和设备指纹信息生成客户端临时密钥。一个示例中,可以获取的用户输入的用户识别码和设备指纹信息为输入参数,通过执行密钥派生算法得到客户端临时密钥。

在一个实施例中,在基于所述用户识别码生成客户端临时密钥之前,还包括步骤:读取存储的盐值(在密码加密过程中添加的额外的值)。

此时,上述基于用户识别码生成客户端临时密钥的步骤包括:基于用户识别码和读取的该盐值生成客户端临时密钥。一个具体示例中,可以以获取的用户输入的用户识别码及该盐值为输入参数,通过执行密钥派生算法得到该客户端临时密钥。从而,通过引入盐值,可以有利于抵抗彩虹表攻击,进一步加强安全性。

在一个实施例中,在基于用户识别码生成客户端临时密钥之前,还包括步骤:读取存储的盐值;并读取设备硬件参数、设备软件参数以及设备身份标识,基于设备硬件参数、所述设备软件参数以及所述设备身份标识生成设备指纹信息。

此时,上述基于用户识别码生成客户端临时密钥的步骤包括:基于所述用户识别码、所述盐值和所述设备指纹信息生成所述临时密钥。一个具体示例中,可以是以获取的用户输入的用户识别码、设备指纹信息以及该盐值为输入参数,通过执行密钥派生算法得到该客户端临时密钥。

在一个实施例中,在基于所述用户识别码生成客户端临时密钥之前,还可以包括步骤:读取存储的随机整数。

此时,上述基于用户识别码生成客户端临时密钥的步骤包括:基于用户识别码,执行随机整数次的密钥派生算法生成客户端临时密钥。从而,通过引入随机整数,可以有利于抵抗彩虹表攻击,进一步加强安全性。

在一个实施例中,在基于所述用户识别码生成客户端临时密钥之前,还可以包括步骤:读取存储的盐值和随机整数。

此时,基于用户识别码生成客户端临时密钥的步骤包括:基于用户识别码和盐值,执行随机整数次的密钥派生算法生成客户端临时密钥。

可以理解,在以用户识别码作为输入参数生成客户端临时密钥的情况下,可以是以用户识别码为输入参数,执行随机整数次的密钥派生算法生成客户端临时密钥。在一个实施例中,在读取了随机整数、且是以用户识别码和设备指纹信息为输入参数生成客户端临时密钥的情况下,是以用户识别码和设备指纹信息为输入参数,执行随机整数次的密钥派生算法生成客户端临时密钥。在一个实施例中,在同时读取了盐值和随机整数,基于用户识别码、盐值和设备指纹信息生成临时密钥的情况下,可以是以获取的用户输入的用户识别码、设备指纹信息以及该盐值为输入参数,执行随机整数次的密钥派生算法生成客户端临时密钥。

在一个实施例中,在上述获取用户输入的用户识别码之前,还可以包括步骤:获取用户输入的口令认证信息和验证码;验证口令认证信息和验证码,并在验证通过时,显示用户识别码输入界面。从而,可以使用口令认证和验证码的双重认证,在验证正确的情况下,才允许输入用户识别码。在一个具体示例中,还可以对口令的长度和字符类型进行限定,如口令的长度必须大于第一预定长度,字符类型必须包含大写字母、小写字母和数字等等,以实施高强度验证。

另一方面,在一个实施例中,还可以在连续第一预定次数口令认证信息和验证码验证不通过时,锁定该验证口令认证信息和验证码机制,即限制不允许用户继续执行响应的流程,并在等待第一时间段后解锁,并在解锁后连续第二预定次数口令认证信息和验证码验证不通过时,锁定该验证口令认证信息和验证码机制,并在等待第二时间段后解锁,且第二时间段大于第一时间段,以此类推。

步骤s4012:采用所述客户端临时密钥对所述客户端私钥分量密文解密,获得客户端私钥分量。

在采用客户端临时密钥对客户端私钥分量进行解密时,可采用任何可能的解密方式进行,只要能够与加密方式对应即可。如该客户端临时密钥可是对称密钥,通过客户端临时密钥对客户端私钥分量执行对称解密,获得客户端私钥分量。

在一个实施例中,在数字签名过程中,在基于客户端私钥分量进行数字签名后,还可以销毁内存中的客户端私钥分量的副本。以避免内存中的客户端私钥分量的副本被他人获知的可能性,以进一步加强安全性。

在一个实施例中,在进行数字签名之前,还可以包括步骤:验证服务端私钥分量与客户端私钥分量是否匹配,从而避免非授权使用服务端私钥分量。

以下结合其中一个示例进行详细举例说明。在本示例中,涉及客户端私钥分量的生成、客户端私钥分量的使用以及客户端私钥分量的保护。

生成客户端私钥分量的过程可包括下述步骤a1至步骤a4。

步骤a1:生成相关非敏感参数。一个实施例中的非敏感参数包括盐值salt、随机整数rounds以及设备身份标识uuid。

盐值salt:客户端可用随机数发生器生成盐值salt。

随机整数rounds:客户端可用随机数发生器生成一个随机整数rounds,该随机整数rounds可用作密钥派生函数kdf的迭代次数。

设备身份标识uuid:客户端可用随机数发生器生成用于标识设备身份的设备身份标识uuid。

生成的盐值salt、随机整数rounds和设备身份标识uuid,可以保存在用户终端的客户端(如移动端app(application,第三方应用程序))的隔离容器内部的非挥发性存储空间。

步骤a2:生成设备指纹信息mobileid。

具体实现时,客户端可从移动设备的客户端的隔离容器的非挥发性存储空间中读取相关硬件参数sysinfo1,该硬件参数sysinfo1可以包括cpu(centralprocessingunit,中央处理器)类型、cpu个数等硬件参数。

此外,客户端可读取所在的终端设备的相关软件参数sysinfo2,软件参数sysinfo2可以包括操作系统类型等相关软件参数。

此外,客户端可从移动设备的客户端的隔离容器的非挥发性存储空间中读取设备身份标识uuid。

可以理解,读取硬件参数sysinfo1、软件参数sysinfo2和设备身份标识uuid的过程可以不分先后顺序,只要在下述具体计算设备指纹信息mobileid之前,能够读取到硬件参数sysinfo1、软件参数sysinfo2和设备身份标识uuid即可。

随后,将硬件参数sysinfo1、软件参数sysinfo2和设备身份标识uuid串接以后,将串接后的参数作为输入,执行摘要算法计算出设备指纹信息mobileid,该设备指纹信息mobileid可以是256比特的信息,可以表示为:

mobileid=hash(sysinfo1||sysinfo2||uuid)。

其中,摘要算法hash可以是任何可能的摘要算法,如md5(消息摘要算法第五版)、sha256(securehashalgorithm,安全散列算法)、sm3(一种密码杂凑算法)等。

步骤a3:生成临时密钥tk。

客户端显示用户识别码输入界面,提示用户输入用户识别码(pin码),并获取用户输入的用户识别码。此外,客户端还从移动设备的客户端的隔离容器的非挥发性存储空间中读取盐值salt和随机整数rounds。

随后,将用户识别码(pin码)、盐值salt、设备指纹信息mobileid串接后,将串接后的信息作为输入参数,执行随机整数rounds次密钥派生算法得到临时密钥tk,公式可以表示为:

tk=kdf(pin||salt||mobileid,rounds)。

步骤a4:生成客户端私钥分量并加密存储。

客户端用随机数发生器生成随机数,并将该随机数作为客户端私钥分量d1。

随后,客户端以客户端私钥分量d1作为输入,使用临时密钥tk作为对称密钥执行对称加密算法(如aes、sm4等),对客户端私钥分量d1进行加密,获得客户端私钥分量密文sd1。具体的加密方式可以采用任何加密模式(如ecb/cbc/ofb等)。

获得的客户端私钥分量密文sd1,保存在用户终端的客户端(如移动端app)的隔离容器内部的非挥发性存储空间。

在使用客户端私钥分量的过程中,需恢复出客户端私钥分量,以使用客户端私钥分量。恢复出客户端私钥分量的过程可以包括下述步骤b1至步骤b4。

步骤b1:提取参数。

一个具体示例中,提取的参数可以包括:盐值salt、随机整数rounds、设备身份标识uuid以及客户端私钥分量密文sd1。

步骤b2:提取设备指纹信息mobileid。

具体实现时,客户端可从移动设备的客户端的隔离容器的非挥发性存储空间中读取相关硬件参数sysinfo1,并读取所在的终端设备的相关软件参数sysinfo2,从移动设备的客户端的隔离容器的非挥发性存储空间中读取设备身份标识uuid。

可以理解,读取硬件参数sysinfo1、软件参数sysinfo2和设备身份标识uuid的过程可以不分先后顺序,只要在下述具体计算设备指纹信息mobileid之前,能够读取到硬件参数sysinfo1、软件参数sysinfo2和设备身份标识uuid即可。

随后,将硬件参数sysinfo1、软件参数sysinfo2和设备身份标识uuid串接以后,将串接后的参数作为输入,执行摘要算法计算出设备指纹信息mobileid。

步骤b3:生成临时密钥tk。

客户端显示用户识别码输入界面,提示用户输入用户识别码(pin码),并获取用户输入的用户识别码。此外,客户端还从移动设备的客户端的隔离容器的非挥发性存储空间中读取盐值salt和随机整数rounds。

随后,将用户识别码(pin码)、盐值salt、设备指纹信息mobileid串接后,将串接后的信息作为输入参数,执行随机整数rounds次密钥派生算法得到临时密钥tk,公式可以表示为:

tk=kdf(pin||salt||mobileid,rounds)。

步骤b4:计算客户端私钥分量。

客户端以客户端私钥分量密文sd1作为输入,使用临时密钥tk作为对称密钥执行对称加密的解密算法(如aes、sm4等),对客户端私钥分量密文sd1进行解密,获得客户端私钥分量d1进行加密。

获得客户端私钥分量d1后,可采用该执行相关的加密、签名、解密等过程。

其中,为了形成对私钥分量的有效保护,在具体实现时,可以采用下述相关策略进行。

其中一个实施例中,可以在用户登陆用户终端的客户端(如app)时,使用口令认证+验证码的双因素验证,该验证码具体可以是短信验证码。其中,口令认证可以使用chap协议或者ieeep1363定义的口令认证协议(如srp-6)等。在验证口令正确的条件下,才显示pin码输入界面,才允许输入pin码来调用客户端私钥分量。

在其中一个实施例,可以对用户口令及pin码的强度实施验证策略,如要求pin码满足条件:其一、长度大于第一预定长度,或者长度在预定长度范围内,如长度为8~12个字符;其二、需同时包含大写字母、小写字母和数字;其三、通过预置的列表进行弱口令检查。

在其中一个实施例中,在每一次执行协同签名算法之后,客户端立即销毁内存中客户端私钥分量d1的任何副本。

在其中一个实施例中,客户端恢复出客户端私钥分量d1之后,在执行协同签名等步骤之前,进一步需验证客户端私钥分量与服务端私钥分量是否匹配。只有在匹配的条件下,才能使用客户端私钥分量d1参与签名运算,从而利用可靠安全的服务端私钥分量d2来实现对用户身份的增强验证。验证私钥分量配对的具体实现方式本实施例不做限定,如可以参考gb/t15843标准。

在口令认证流程中,以及协同签名阶段的私钥分量配对流程中,服务端均可以实施认证失败的异常处理措施。如连续执行第一预定次数(如3次)错误的认证流程,则服务端限制该用户继续执行相应的流程,迫使其等待第一预定时间段(如1分钟)之后才允许继续操作。如果在解锁之后再次发生连续第二预定次数(该第二预定次数与第一预定次数可以相同,也可以不同,如也可以设定为3次)错误的认证,则继续锁定,且锁定的时间可以被加倍,依此类推。如果客户端成功完成了一次认证,则解除相应帐户的错误锁定延时策略。

综合上述内容,如上所述的本申请各实施例的方案,通过下述方式提高了安全性能。

通过使用满足安全三级的密码机来保护服务端私钥分量d2,即使泄漏了客户端私钥分量d1,攻击者也无法获得完整的私钥d。

使用满足国密随机数检测规范的随机数生成器来产生客户端私钥分量d1,利用pin码派生的临时密钥tk来加密保护客户端私钥分量d1。

通过对pin码强度的验证,有利于抵抗离线字典攻击。而通过引入盐值salt、随机整数rounds,有利于抵抗彩虹表攻击。

在使用pin码派生临时密钥tk的过程中,执行随机整数rounds次的kdf算法,将会消耗可观的执行时间,这给攻击者实施离线的枚举或字典攻击增加了难度。在本实施例方案中,pin码的枚举空间至少包含628种情况,假设计算一次kdf迭代消耗100毫秒,则枚举大约需要2.2×1016毫秒(~6900世纪)。

通过增加客户端和服务端私钥分量配对的验证步骤,增加了对客户端身份的认证强度,同时可以避免非授权使用服务端私钥分量。

通过对密码主管/用户口令认证、客户端和服务端私钥分量配对等在线验证流程的错误异常实施风险控制措施,使得攻击者无法在可接受的时间内实施在线枚举或字典攻击。

在用户登录用户终端的客户端时采用了登录口令+短信验证码的双因素验证。且将用户角色的登录口令与证书私钥的保护pin完全分离,避免了口令参与生成/恢复客户端私钥分量的运算过程。

如图5所示,一个实施例中的基于分布式私钥的处理系统包括客户端1和服务端2。其中,以客户端生成私钥分量的场景为例,此时:

客户端1生成客户端私钥分量,获取用户识别码,基于所述用户识别码生成客户端临时密钥,并采用所述客户端临时密钥对所述客户端私钥分量加密,获得客户端私钥分量密文,并向服务端发送消息;

服务端2接收客户端1发送的消息,并在所述消息满足服务端私钥分量使用条件时,向密码机发送控制指令,所述控制指令携带关联信息,所述控制指令用以指示所述密码机根据所述关联信息以及所述密码机的对称密钥,生成服务端私钥分量,所述关联信息包括服务端平台标识。

参考图5,一个实施例中,服务端2包括服务端通信模块21和私钥分量处理控制模块22。

服务端通信模块21,用于接收客户端发送的消息。客户端发送的消息可以是任何可能的消息,只要客户端发送的消息能够指示或者触发服务端执行与服务端私钥分量相关的操作。在一个实施例中,该客户端发送的该消息可以是在指示服务端生成服务端私钥密钥的过程中发送的消息,也可以是在执行数字签名或者解密的过程中发送的消息。在不同的技术场景中,该消息中包含的信息可以有所不同。

在一个实施例中,客户端发送的该消息中可以仅包含能够指示或者触发服务端执行与服务端私钥分量相关的操作即可。

在一个实施例中,客户端发送的该消息中可以包括用户标识。从而通过在该消息中包括用户标识,服务端后续可以基于该用户标识生成与该用户标识对应的服务端私钥分量,从而可以为不同的用户生成不同的服务端私钥分量。

在一个实施例中,客户端发送的该消息中可以包括密钥标识。从而通过在该消息中包括密钥标识,服务端后续可以基于该密钥标识生成与该密钥标识对应的服务端私钥分量,从而可以基于不同的密钥标识生成不同的服务端私钥分量,生成的不同的服务端私钥分量,可以用到不同的用途。

在一个实施例中,客户端发送的该消息中也可以同时包括用户标识和密钥标识。从而通过在该消息中包括用户标识和密钥标识,服务端后续可以基于该用户标识和密钥标识,生成与该用户标识对应的不同的服务端私钥分量,生成的不同的服务端私钥分量,可以用于对应于该用户标识的不同的用途。

私钥分量处理控制模块22,用于在所述消息满足服务端私钥分量使用条件时,向密码机发送控制指令,所述控制指令携带关联信息,所述控制指令用以指示所述密码机根据所述关联信息以及所述密码机的对称密钥,生成服务端私钥分量,所述关联信息包括服务端平台标识。

其中,该服务端私钥分量使用条件可以做不同的设定,只要该消息能够触发服务端向密码机发送上述控制指令即可。

如在一个实施例中,该消息可以是客户端与服务端协同生成服务端私钥分量的过程中的相关消息。

在另一个实施例中,该消息可以是客户端与服务端协同加密、签名或者解密的过程中的相关消息。以进行签名为例,该控制指令可以为签名指令,该签名指令用于指示密码机根据关联信息以及密码机的对称密钥,生成服务端私钥分量,并基于服务端私钥分量进行数字签名。从而,可以在执行数字签名的过程中,指示密码机生成服务端私钥分量。从而,服务端实在执行数字签名的过程中完成服务端私钥分量的生成过程,服务端所在的服务器和密码机无需存储生成的服务端私钥分量,在服务端需要与多个不同的用户终端的用户协同签名的情况下,服务端和密码机无需存储海量的服务端私钥分量,进一步提高了安全性。

在一个实施例中,在上述客户端发送的消息中包括用户标识时,该关联信息还可以包括该用户标识。此时,基于该控制指令,密码机是基于服务端平台标识、用户标识以及密码机的对称密钥,生成服务端私钥分量。从而,服务端可以基于该用户标识生成与该用户标识对应的服务端私钥分量,从而可以为不同的用户生成不同的服务端私钥分量。

在一个实施例中,在上述客户端发送的消息中包括密钥标识时,该关联信息还包括该密钥标识。此时,基于该控制指令,密码机是基于服务端平台标识、密码标识以及密码机的对称密钥,生成服务端私钥分量。从而,服务端可以基于不同的密钥标识生成不同的服务端私钥分量,生成的不同的服务端私钥分量,可以用到不同的用途。

在一个实施例中,在客户端发送的该消息中同时包括用户标识和密钥标识时,该关联信息还同时包括该用户标识和密钥标识。此时,基于该控制指令,密码机是基于服务端平台标识、用户标识、密码标识以及密码机的对称密钥,生成服务端私钥分量。从而,服务端可以基于该用户标识和密钥标识,生成与该用户标识对应的不同的服务端私钥分量,生成的不同的服务端私钥分量,可以用于对应于该用户标识的不同的用途。

参考图5,在一个实施例中,服务端2还包括:平台标识生成模块23,用于生成所述服务端平台标识。生成服务端平台标识可以采用任何可能的方式进行,如在一个实施例中,可以通过随机数生成器生成一个随机数,并将该随机数作为该服务端平台标识,从而加强获得的服务端平台标识的随机性,以加强基于服务端平台标识生成的服务端私钥分量的随机性,进一步加强安全性。在另一个实施例中,可以基于服务端的相关信息,采用一定的算法生成该服务端平台标识。

参考图5,在一个实施例中,服务端2还包括:服务端私钥副本销毁模块24,用于向所述密码机发送销毁指令,所述销毁指令用以指示所述密码机销毁内存中的服务端私钥分量副本。从而,在每一次使用服务端私钥分量之后,都销毁内存中的服务端私钥分量的副本,避免了内存中的服务端私钥分量副本被第三方获得的可能性,以进一步加强安全性。

参考图5,在一个实施例中,服务端2还包括:安全权限控制模块25,用于控制所述服务端私钥分量不能以明文形式从所述密码机导出;并控制所述服务端私钥分量,不允许被存储在非挥发性存储部件。从而进一步加强对服务端私钥分量的保护,进一步加强安全性。

参考图5,在一个实施例中,以生成客户端私钥分量的应用场景为例,客户端1包括:客户端私钥分量生成模块101、临时密钥生成模块102、私钥分量加密模块103和客户端通信模块104。

客户端私钥分量生成模块101,用于生成客户端私钥分量。

客户端私钥分量的生成方式采用任何可能的方式进行。在一个实施例中,可以是采用随机数发生器生成随机数,并将该随机数作为该客户端私钥分量。

临时密钥生成模块102,用于获取用户识别码,基于所述用户识别码生成客户端临时密钥。

该用户识别码在一个实施例中可以是用户的pin(personalidentificationnumber,个人识别码),该用户识别码可以基于用户输入获得。

在基于用户识别码生成客户端临时密钥时,可以采用任何可能的方式进行。一个实施例中,可以是以获取的用户输入的用户识别码为输入参数,通过执行密钥派生算法得到该客户端临时密钥。

参考图5所示,在一个实施例中,客户端1还包括:设备指纹信息模块107,用于获取设备硬件参数、设备软件参数以及设备身份标识,基于所述设备硬件参数、所述设备软件参数以及所述设备身份标识生成设备指纹信息。

此时,上述临时密钥生成模块102基于所述用户识别码和所述设备指纹信息生成所述临时密钥。一个具体示例中,可以是以获取的用户输入的用户识别码和设备指纹信息为输入参数,通过执行密钥派生算法得到该客户端临时密钥。

在一个实施例中,客户端1还包括:设备身份标识生成模块(图中未示出),用随机数生成器生成设备身份标识,并存储生成的该设备身份标识,该设备身份标识可以存储在非挥发性存储空间,以方便后续应用过程中进行读取。

参考图5所示,在一个实施例中,客户端1还包括:盐值模块108,用于生成盐值(在密码加密过程中添加的额外的值),并存储所述盐值。该盐值可以存储在非挥发性存储空间,以方便后续应用过程中进行读取。

此时,上述临时密钥生成模块102,可基于用户识别码和盐值生成临时密钥。

在一个实施例中,参考图5所示,客户端1可同时包括设备指纹信息模块107和盐值模块108。此时,临时密钥生成模块102以获取的用户输入的用户识别码、设备指纹信息以及该盐值为输入参数,通过执行密钥派生算法得到该客户端临时密钥。从而,通过引入盐值,有利于抵抗彩虹表攻击,进一步加强安全性。

参考图5所示,在一个实施例中,客户端1还可以包括:随机整数模块109,用于生成随机整数,并存储所述随机整数。该随机整数可以存储在非挥发性存储空间,以方便后续应用过程中进行读取。

此时,上述临时密钥生成模块102,可以基于所述用户识别码,执行所述随机整数次的密钥派生算法生成所述临时密钥。从而,通过引入随机整数,可以有利于抵抗彩虹表攻击,进一步加强安全性。

在一个实施例中,客户端1可以同时包括上述设备指纹信息模块107和随机整数模块109,此时,上述临时密钥生成模块102是以用户识别码和设备指纹信息为输入参数,执行随机整数次的密钥派生算法生成客户端临时密钥。

在一个实施例中,客户端1还可以同时包括盐值模块108和随机整数模块109。此时,临时密钥生成模块102,可以是基于所述用户识别码和所述盐值,执行所述随机整数次的密钥派生算法生成所述临时密钥。

在一个实施例中,客户端1还可以同时包括设备指纹信息模块107、盐值模块108和随机整数模块109。此时,临时密钥生成模块102,可以是基于用户识别码、设备指纹信息和盐值,执行随机整数次的密钥派生算法生成临时密钥。

参考图5所示,在一个实施例中,客户端1还包括:口令验证模块106,用于获取用户输入的口令认证信息和验证码,验证所述口令认证信息和所述验证码,并在验证通过时,显示用户识别码输入界面。从而,可以使用口令认证和验证码的双重认证,在验证正确的情况下,才允许输入用户识别码。在一个具体示例中,还可以对口令的长度和字符类型进行限定,如口令的长度必须大于第一预定长度,字符类型必须包含大写字母、小写字母和数字等等,以实施高强度验证。

一个实施例中,口令验证模块106还可在连续第一预定次数口令认证信息和验证码验证不通过时,锁定该验证口令认证信息和验证码机制,即限制不允许用户继续执行响应的流程,并在等待第一时间段后解锁,并在解锁后连续第二预定次数口令认证信息和验证码验证不通过时,锁定该验证口令认证信息和验证码机制,并在等待第二时间段后解锁,且第二时间段大于第一时间段,以此类推。

私钥分量加解密模块103,用于采用所述客户端临时密钥对所述客户端私钥分量加密,获得客户端私钥分量密文。

在采用客户端临时密钥对客户端私钥分量进行加密时,可以采用任何可能的加密方式进行。如该客户端临时密钥可以是作为对称密钥,通过客户端临时密钥对客户端私钥分量执行对称加密,获得客户端私钥密文。一个实施例中,获得的客户端私钥密文可以保存在客户端的隔离容器内部的非挥发性存储空间。

据此,如图5所示,该客户端还可以包括客户端私钥密文存储模块105,用于存储上述客户端私钥分量密文。

客户端通信模块104,用于向所述服务端发送消息。

其中,客户端发送的消息可以是任何可能的消息,只要客户端发送的消息能够指示或者触发服务端执行与服务端私钥分量相关的操作。在一个实施例中,该客户端发送的该消息可以是在指示服务端生成服务端私钥密钥的过程中发送的消息,也可以是在执行数字签名或者解密的过程中发送的消息。在不同的技术场景中,该消息中包含的信息可以有所不同。

参考图5,在一个实施例中,以应用客户端私钥分量的应用场景为例,此时,基于分布式私钥的处理系统包括客户端1和服务端2,其中:

客户端1获取用户识别码和客户端私钥分量密文,基于所述用户识别码生成客户端临时密钥,并采用所述客户端临时密钥对所述客户端私钥分量密文解密,获得客户端私钥分量,并向服务端发送消息;

服务端2接收客户端发送的消息,并在所述消息满足服务端私钥分量使用条件时,向密码机发送控制指令,所述控制指令携带关联信息,所述控制指令用以指示所述密码机根据所述关联信息以及所述密码机的对称密钥,生成服务端私钥分量,所述关联信息包括服务端平台标识。该服务端2的结构可以与生成客户端私钥分量场景中的结构相同。

此时,客户端1包括:客户端私钥密文存储模块105、临时密钥生成模块102、私钥分量解密模块112和上述客户端通信模块104。

客户端私钥密文存储模块105,用于存储客户端私钥密文。具体可以是存储上述私钥分量加密模块103获得的客户端私钥密文。

临时密钥生成模块102,用于获取用户识别码,基于所述用户识别码生成客户端临时密钥。

该用户识别码在一个实施例中可以是用户的pin(personalidentificationnumber,个人识别码),该用户识别码可以基于用户输入获得。

在基于用户识别码生成客户端临时密钥时,可以采用任何可能的方式进行。一个实施例中,可以是以获取的用户输入的用户识别码为输入参数,通过执行密钥派生算法得到该客户端临时密钥。

参考图5所示,在一个实施例中,在上述客户端1包括设备指纹信息模块107时,该设备指纹信息模块107可以读取设备硬件参数、设备软件参数以及设备身份标识,基于所述设备硬件参数、所述设备软件参数以及所述设备身份标识生成设备指纹信息。

此时,上述临时密钥生成模块102基于所述用户识别码和所述设备指纹信息生成所述临时密钥。一个具体示例中,可以是以获取的用户输入的用户识别码和设备指纹信息为输入参数,通过执行密钥派生算法得到该客户端临时密钥。

参考图5所示,在一个实施例中,在客户端1包括盐值模块108时,该盐值模块108还读取存储的盐值。此时,上述临时密钥生成模块102,可以基于所述用户识别码和所述盐值生成所述临时密钥。

在一个实施例中,参考图5所示,在客户端1同时包括上述设备指纹信息模块107和盐值模块108时,上述临时密钥生成模块102,以读取的用户输入的用户识别码、设备指纹信息以及该盐值为输入参数,通过执行密钥派生算法得到该客户端临时密钥。从而,通过引入盐值,可以有利于抵抗彩虹表攻击,进一步加强安全性。

参考图5所示,在一个实施例中,在客户端1包括随机整数模块109时,该随机整数模块109还读取存储的随机整数。此时,上述临时密钥生成模块102,可以基于所述用户识别码,执行随机整数次的密钥派生算法生成所述临时密钥。从而,通过引入随机整数,可以有利于抵抗彩虹表攻击,进一步加强安全性。

可以理解,在一个实施例中,在客户端1同时包括上述设备指纹信息模块107和随机整数模块109时,上述临时密钥生成模块102是以用户识别码和设备指纹信息为输入参数,执行随机整数次的密钥派生算法生成客户端临时密钥。在客户端1同时包括盐值模块108和随机整数模块109时,临时密钥生成模块102可以是基于所述用户识别码和所述盐值,执行所述随机整数次的密钥派生算法生成所述临时密钥。在客户端1同时包括设备指纹信息模块107、盐值模块108和随机整数模块109时,临时密钥生成模块102可以基于用户识别码、设备指纹信息和所述盐值,执行所述随机整数次的密钥派生算法生成所述临时密钥。

参考图5所示,在一个实施例中,客户端1还包括:口令验证模块106,用于获取用户输入的口令认证信息和验证码,验证所述口令认证信息和所述验证码,并在验证通过时,显示用户识别码输入界面。

另一方面,口令验证模块106还可以在连续第一预定次数口令认证信息和验证码验证不通过时,锁定该验证口令认证信息和验证码机制,即限制不允许用户继续执行响应的流程,并在等待第一时间段后解锁,并在解锁后连续第二预定次数口令认证信息和验证码验证不通过时,锁定该验证口令认证信息和验证码机制,并在等待第二时间段后解锁,且第二时间段大于第一时间段,以此类推。

私钥分量解密模块112,用于读取所述客户端私钥密文,并采用所述客户端临时密钥对所述客户端私钥分量密文解密,获得客户端私钥分量。

在采用客户端临时密钥对客户端私钥分量进行解密时,可以采用任何可能的加密方式进行,只要能够与加密方式对应起来就好。如该客户端临时密钥可以是作为对称密钥,通过客户端临时密钥对客户端私钥分量执行对称解密,获得客户端私钥分量。

参考图5,一个实施例中,客户端1还包括:客户端私钥副本销毁模块110,用于在数字签名过程中,在基于所述客户端私钥分量进行数字签名后,销毁内存中的客户端私钥分量的副本。从而可以避免内存中的客户端私钥分量的副本被他人获知的可能性,以进一步加强安全性。

参考图5,一个实施例中,客户端1还包括:客户端私钥分量匹配验证模块111,用于与所述服务端协同验证服务端私钥分量与客户端私钥分量是否匹配。从而可以避免非授权使用服务端私钥分量

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

图6示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是上述环境中涉及的设备一和设备二。如图6所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口。在该计算机设备为用户终端的情况下,还可以包括输入装置。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现基于分布式私钥的处理方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行基于分布式私钥的处理方法。

本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)及存储器总线动态ram(rdram)等。

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

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

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