发明内容
本申请所要解决的技术问题是如何利用SM9算法进行数字签名或解密,避免用户在利用互联网完成相应的业务时面临相应的安全风险,提供一种基于SM9算法的协同签名和解密系统。
第一方面,本申请实施例提供了一种基于SM9算法的协同签名系统,所述系统包括:第一通信方、第二通信方和辅助设备;
所述辅助设备,用于生成第一私钥分量和第二私钥分量;
所述第二通信方,用于接收所述辅助设备发送的第一私钥分量,并将所述第一私钥分量发送给所述第一通信方;
所述辅助设备,用于基于所述第二私钥分量对待签名数据进行签名,得到第二签名数据;所述第二私钥分量保存在所述辅助设备中;所述辅助设备存储的所述第二私钥分量被其它设备获取的概率小于或者等于预设概率阈值;
所述辅助设备,用于将所述第二签名数据发送给所述第二通信方;
所述第二通信方,用于将接收到的所述第二签名数据发送给所述第一通信方;
所述第一通信方,用于基于所述第二签名数据和所述第一私钥分量得到目标签名数据。
可选的,所述第一私钥分量为所述辅助设备生成的一个大于等于1且小于等于预设数值的随机数;所述第二私钥分量为所述辅助设备生成的一个大于等于1且小于等于所述预设数值随机数,所述预设数值是所述第一通信方和第二通信方预先协商、并由所述第二通信方发送给所述辅助设备的。
可选的,所述辅助设备,还用于将所述第一私钥分量发送给第二通信方之后,删除所述第一私钥分量。
可选的,所述辅助设备针对接收到的多个签名请求所生成的所述第二私钥分量相同。
可选的,所述辅助设备包括:
密码机。
第二方面,本申请实施例提供了一种基于SM9算法的协同解密系统,所述系统包括:第一通信方、第二通信方和辅助设备;
所述辅助设备,用于生成第一私钥分量和第二私钥分量;
所述第二通信方,用于接收所述辅助设备发送的第一私钥分量,并将所述第一私钥分量发送给所述第一通信方;
所述辅助设备,用于基于所述第二私钥分量对待解密数据进行解密,得到第二解密数据;所述第二私钥分量保存在所述辅助设备中;所述辅助设备存储的所述第二私钥分量被其它设备获取的概率小于或者等于预设概率阈值;
所述辅助设备,用于将所述第二解密数据发送给所述第二通信方;
所述第二通信方,用于将接收到的所述第二解密数据发送给所述第一通信方;
所述第一通信方,用于基于所述第二解密数据和第一解密数据得到目标解密数据;所述第一解密数据,是所述第一通信方基于所述第一私钥分量对待解密数据进行解密得到的。
可选的,所述第一私钥分量为所述辅助设备生成的一个大于等于1且小于等于预设数值的随机数;所述第二私钥分量为所述辅助设备生成的一个大于等于1且小于等于所述预设数值随机数,所述预设数值是所述第一通信方和第二通信方预先协商、并由所述第二通信方发送给所述辅助设备的。
可选的,所述辅助设备,还用于将所述第一私钥分量发送给第二通信方之后,删除所述第一私钥分量。
可选的,所述辅助设备针对接收到的多个签名请求所生成的所述第二私钥分量相同。
可选的,所述辅助设备包括:
密码机。
与现有技术相比,本申请实施例具有以下优点:
第一方面,本申请实施例提供了一种基于SM9算法的协同签名系统,包括:第一通信方、第二通信方和辅助设备。具体地,所述辅助设备,用于生成第一私钥分量和第二私钥分量;所述第二通信方,用于接收所述辅助设备发送的第一私钥分量,并将所述第一私钥分量发送给所述第一通信方;所述辅助设备,用于基于所述第二私钥分量对待签名数据进行签名,得到第二签名数据;所述第二私钥分量保存在所述辅助设备中;所述辅助设备存储的所述第二私钥分量被其它设备获取的概率小于或者等于预设概率阈值;所述辅助设备,用于将所述第二签名数据发送给所述第二通信方;所述第二通信方,用于将接收到的所述第二签名数据发送给所述第一通信方;所述第一通信方,用于基于所述第二签名数据和所述第一私钥分量得到目标签名数据。
由此可见,在本申请实施例中,采用协同签名的方式对待签名数据进行签名,入侵者在未获知第一私钥分量和/或第二私钥分量的前提下,均不可以伪造目标签名数据。而且,由于辅助设备中存储的第二私钥分量被其它设备获取的概率小于或者等于预设阈值,基本上可以认为辅助设备中存储的第二私钥分量不会泄露,故而,利用本申请实施例的方案,第二私钥分量不会泄露,故而保证了用户私钥的安全性,从而使得所述目标签名数据不可伪造,从而保证用户在利用互联网完成相应的业务时的安全性。
第二方面,本申请实施例提供了一种基于SM9算法的协同解密系统,包括第一通信方、第二通信方和辅助设备。具体地,所述辅助设备,用于生成第一私钥分量和第二私钥分量;所述第二通信方,用于接收所述辅助设备发送的第一私钥分量,并将所述第一私钥分量发送给所述第一通信方;所述辅助设备,用于基于所述第二私钥分量对待解密数据进行解密,得到第二解密数据;所述第二私钥分量保存在所述辅助设备中;所述辅助设备存储的所述第二私钥分量被其它设备获取的概率小于或者等于预设概率阈值;所述辅助设备,用于将所述第二解密数据发送给所述第二通信方;所述第二通信方,用于将接收到的所述第二解密数据发送给所述第一通信方;所述第一通信方,用于基于所述第二解密数据和第一解密数据得到目标解密数据;所述第一解密数据,是所述第一通信方基于所述第一私钥分量对待解密数据进行解密得到的。
由此可见,在本申请实施例中,采用协同解密的方式对待解密数据进行解密,入侵者在未获知第一私钥分量和/或第二私钥分量的前提下,均不可以得到正确的目标解密数据。而且,由于辅助设备中存储的第二私钥分量被其它设备获取的概率小于或者等于预设阈值,基本上可以认为辅助设备中存储的第二私钥分量不会泄露,故而,利用本申请实施例的方案,第二私钥分量不会泄露,故而保证了用户私钥的安全性,从而使得入侵者无法得到正确的目标解密数据,,从而保证用户在利用互联网完成相应的业务时的安全性。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面结合附图,详细说明本申请的各种非限制性实施方式。
参见图1,该图为本申请实施例提供的一种基于SM9算法的协同签名系统的结构示意图。
本申请实施例提供的基于SM9算法的协同签名系统100,例如可以包括第一通信方101、第二通信方102和辅助设备103。
在本申请实施例中,所述第一通信方101和所述第二通信方102表示进行通信的双方。所述第一通信方101例如可以为终端,所述终端可以为智能手机、平板电脑等移动终端,所述终端也可以为台式机等非移动终端,本申请实施例不做具体限定。所述第二通信方102例如可以为服务器。
所述辅助设备103为在第一通信方101和第二通信方102进行通信的过程中,执行特定操作,使得第一通信方101和第二通信方102可以正常通信的的设备。
以下结合图2,介绍应用于图1所示的基于SM9算法的协同签名系统100的基于SM9算法的协同签名方法。
参见图2,该图为本申请实施例提供的一种基于SM9算法的协同签名方法的信令交互图。
需要说明的是,图2所示的第一通信方可以为图1所示的第一通信方101,图2所示的第二通信方可以为图1所示的第二通信方102,图2所示的辅助设备可以为图1所示的辅助设备103。
本申请实施例提供的基于SM9算法的协同签名方法,可以通过如下步骤S101-S108实现。
S101:所述辅助设备生成第一私钥分量和第二私钥分量。
在本申请实施例中,当第一通信方与第二通信方进行通信时,往往需要对通信过程中涉及的相关信息进行签名。当需要对通信过程中涉及的相关信息进行签名时,第一通信方可以向第二通信方发送签名请求,第二通信方也可以向第一通信方发送签名请求。第二通信方接收到第一通信方发送的签名请求之后,或者第二通信方在向第一通信方发送签名请求之后,可以对待签名数据进行签名。对待签名数据进行签名的过程中,需要使用与第一通信方对应的第一私钥分量和与第二通信方对应的第二私钥分量。在本申请实施例中,所述第一私钥分量和所述第二私钥分量是由辅助设备生成的。
本申请实施例不具体限定所述辅助设备生成第一私钥分量和第二私钥分量的具体实现方式,作为一种示例,所述辅助设备可以生成一个大于等于1且小于等于预设数值的第一随机数,并将该第一随机数确定为所述第一私钥分量;相应的,所述辅助设备可以生成一个大于等于1且小于等于所述预设数字的第二随机数,并将该第二随机数确定为所述第二私钥分量。
在本申请实施例中,所述预设数值可以是由所述第一通信方和第二通信方预先协商、并由所述第二通信方发送给所述辅助设备的。具体地,在基于SM9算法的签名方式中,第一通信方和第二通信方可以共享SM9算法的椭圆曲线参数,并根据该椭圆曲线参数确定前述预设阈值。
S102:所述辅助设备将所述第一私钥分量发送给所述第二通信方。
S103:所述第二通信方将接收到的所述第一私钥分量发送给所述第一通信方。
辅助设备生成第一私钥分量和第二私钥分量之后,可以将第一私钥分量发送给第二通信方,以便于所述第二通信方将所述第一私钥分量发送给第一通信方,而后,第一通信方即可根据该第一私钥分量执行相应的签名计算。
S104:所述辅助设备基于所述第二私钥分量对待签名数据进行签名,得到第二签名数据。
在本申请实施例中,考虑到在实际应用中,第二通信方可能同时与多个第一通信方进行通信,因此,若由第二通信方自身执行与签名相关的计算,则导致第二通信方的计算量巨大,可能存在计算资源不足,影响正常通信的问题。故而在本申请实施例中,由辅助设备替代第二通信方执行与签名相关的计算,以降低第二通信方的计算量,从而保证所述第二通信方与第一通信方之间的正常通信。即在本申请实施例中,由所述辅助设备基于所述第二私钥分量对待签名数据进行签名,得到第二签名数据。
可以理解的是,第二通信方执行与签名相关的计算,需要使用第二通信方对应的私钥分量,即第二私钥分量,而在本申请实施例中,由辅助设备替代第二通信方执行与签名相关的计算,故而在本申请实施例中,辅助设备可以保存所述第二私钥分量,以便利用该第二私钥分量执行与签名相关的计算。
在本申请实施例中,所述辅助设备存储的所述第二私钥分量被其它设备获取的概率小于或者等于预设概率阈值。所述预设概率阈值是一个很小的值,所述预设阈值的值无限接近于0。换言之,所述辅助设备存储的所述第二私钥分量被其它设备获取的概率几乎等于0,即所述辅助设备中存储的第二私钥分量几乎不会泄露。
在本申请实施例中,考虑到密码机具有特有的安全机制,密码机中存储的数据不可能被其它设备获取,故而在本申请实施例的一种实现方式中,所述辅助设备可以为密码机。需要说明的是,此处提及的密码机可以是通过国家商用密码主管部门鉴定并批准使用的国内自主开发的主机加密设备,也可以是其它主机加密设备,本申请实施例不做具体限定。
需要说明的是,关于“辅助设备基于所述第二私钥分量对待签名数据进行签名,得到第二签名数据”的具体实现方式,可以采用SM9算法中的相关签名算法,此处不详细说明。
S105:所述辅助设将所述第二签名数据发送给所述第二通信方。
S106:所述第二通信方将接收到的所述第二签名数据发送给第一通信方。
S107:所述第一通信方基于所述第一私钥分量对待签名数据进行签名,得到第一签名数据。
需要说明的是,关于“所述第一通信方基于所述第一私钥分量对待签名数据进行签名,得到第一签名数据”的具体实现方式,可以采用SM9算法中的相关签名算法,此处不详细说明。
S108:所述第一通信方基于所述第二签名数据和所述第一签名数据得到目标签名数据。
辅助设备替代所述第二通信方计算得到第二签名数据之后,可以通过所述第二通信方将第二签名数据发送给所述第一通信方。第一通信方自身可以根据所述第一私钥分量对待签名数据进行签名,得到第一签名数据,而后第一通信方基于所述第二签名数据和所述第一签名数据进行相应的计算,从而得到所述目标签名数据。
需要说明的是,关于“第一通信方基于所述第二签名数据和所述第一签名数据得到目标签名数据”的具体实现方式,可以采用SM9算法中的相关签名算法,此处不详细说明。
需要说明的是,S104可以不是必须要在S103之后执行,S104可以在S101和S105之间执行即可。S107不是必须要在S106之后执行,S107在S103和S108之间执行即可。
通过以上描述可知,在本申请实施例中,采用协同签名的方式对待签名数据进行签名,入侵者在未获知第一私钥分量和/或第二私钥分量的前提下,均不可以伪造目标签名数据。而且,由于辅助设备中存储的第二私钥分量被其它设备获取的概率小于或者等于预设阈值,基本上可以认为辅助设备中存储的第二私钥分量不会泄露,故而,利用本申请实施例的方案,第二私钥分量不会泄露,故而保证了用户私钥的安全性,从而使得所述目标签名数据不可伪造,从而保证用户在利用互联网完成相应的业务时的安全性。
在本申请实施例中,为了避免其它设备获取到完整的用户私钥,所述辅助设备将第一私钥分量发送给第二通信方之后,还可以删除该第一私钥分量。从而保证了辅助设备中不存在完整的用户私钥。更进一步地保证了用户私钥的安全性,从而保证用户在利用互联网完成相应的业务时的安全性。
如前文,辅助设备可以存储所述第二私钥分量,考虑到在实际应用中,辅助设备例如密码机的存储空间是有限的。而第二通信方可能需要与多个辅助设备进行多次通信,故而,第二通信方可能会接收到来自多个第一通信方的众多签名请求。可以理解的是,辅助设备对于一个签名请求,则需要保存与该签名请求对应的第二私钥分量。当签名请求的数量比较多时,辅助设备可能无法存储所有的签名请求各自对应的第二私钥分量。故而在本申请实施例的一种实现方式中,所述辅助设备针对接收到的每一个签名请求生成的第二私钥分量可以相同。这样一来,辅助设备即可只需存储一份第二私钥分量即可,从而解决了当签名请求的数量比较多时,辅助设备可能无法存储所有的签名请求各自对应的第二私钥分量的问题。
参见图3,该图为本申请实施例提供的一种基于SM9算法的协同解密系统的结构示意图。本申请实施例提供的基于SM9算法的协同解密系统200,例如可以包括第一通信方201、第二通信方202和辅助设备203。
在图3所示的基于SM9算法的协同解密系统200中,所述第一通信方201和所述第二通信方202表示进行通信的双方。所述第一通信方201例如可以为终端,所述终端可以为智能手机、平板电脑等移动终端,所述终端也可以为台式机等非移动终端,本申请实施例不做具体限定。所述第二通信方202例如可以为服务器。
所述辅助设备203为在第一通信方201和第二通信方202进行通信的过程中,执行特定操作,使得第一通信方201和第二通信方202可以正常通信的的设备。
以下结合图4,介绍应用于图3所示的基于SM9算法的协同解密系统200的基于SM9算法的协同解密方法。
参见图4,该图为本申请实施例提供的一种基于SM9算法的协同解密方法的信令交互图。
需要说明的是,图4所示的第一通信方可以为图3所示的第一通信方201,图4所示的第二通信方可以为图3所示的第二通信方202,图4所示的辅助设备可以为图3所示的辅助设备203。
本申请实施例提供的基于SM9算法的协同解密方法,可以通过如下步骤S201-S208实现。
S201:所述辅助设备生成第一私钥分量和第二私钥分量。
在本申请实施例中,当第一通信方与第二通信方进行通信时,两者之间的通信数据往往是经过加密之后的数据,因此,第一通信方和第二通信方需要对加密的数据进行解密,以得到该加密数据对应的明文。
当需要对通信过程中涉及的相关数据进行解密时,第一通信方可以向第二通信方发送解密请求,第二通信方也可以向第一通信方发送解密请求。第二通信方接收到第一通信方发送的解密请求之后,或者第二通信方在向第一通信方发送解密请求之后,可以对待解密数据进行解密。对待解密数据进行解密的过程中,需要使用与第一通信方对应的第一私钥分量和与第二通信方对应的第二私钥分量。在本申请实施例中,所述第一私钥分量和所述第二私钥分量是由辅助设备生成的。
本申请实施例不具体限定所述辅助设备生成第一私钥分量和第二私钥分量的具体实现方式,作为一种示例,所述辅助设备可以生成一个大于等于1且小于等于预设数值的第一随机数,并将该第一随机数确定为所述第一私钥分量;相应的,所述辅助设备可以生成一个大于等于1且小于等于所述预设数字的第二随机数,并将该第二随机数确定为所述第二私钥分量。
在本申请实施例中,所述预设数值可以是由所述第一通信方和第二通信方预先协商、并由所述第二通信方发送给所述辅助设备的。具体地,在基于SM9算法的解密方式中,第一通信方和第二通信方可以共享SM9算法的椭圆曲线参数,并根据该椭圆曲线参数确定前述预设阈值。
S202:所述辅助设备将所述第一私钥分量发送给所述第二通信方。
S203:所述第二通信方将接收到的所述第一私钥分量,发送给所述第一通信方。
辅助设备生成第一私钥分量和第二私钥分量之后,可以将第一私钥分量发送给第二通信方,以便于所述第二通信方将所述第一私钥分量发送给第一通信方,而后,第一通信方即可根据该第一私钥分量执行相应的解密计算。
S204:所述辅助设备基于所述第二私钥分量对待解密数据进行解密,得到第二解密数据。
在本申请实施例中,考虑到在实际应用中,第二通信方可能同时与多个第一通信方进行通信,因此,若由第二通信方自身执行与解密相关的计算,则导致第二通信方的计算量巨大,可能存在计算资源不足,影响正常通信的问题。故而在本申请实施例中,由辅助设备替代第二通信方执行与解密相关的计算,以降低第二通信方的计算量,从而保证所述第二通信方与第一通信方之间的正常通信。即在本申请实施例中,由所述辅助设备基于所述第二私钥分量对待解密数据进行解密,得到第二解密数据。
可以理解的是,第二通信方执行与解密相关的计算,需要使用第二通信方对应的私钥分量,即第二私钥分量,而在本申请实施例中,由辅助设备替代第二通信方执行与解密相关的计算,故而在本申请实施例中,辅助设备可以保存所述第二私钥分量,以便利用该第二私钥分量执行与解密相关的计算。
在本申请实施例中,所述辅助设备存储的所述第二私钥分量被其它设备获取的概率小于或者等于预设概率阈值。所述预设概率阈值是一个很小的值,所述预设阈值的值无限接近于0。换言之,所述辅助设备存储的所述第二私钥分量被其它设备获取的概率几乎等于0,即所述辅助设备中存储的第二私钥分量几乎不会泄露。
在本申请实施例中,考虑到密码机具有特有的安全机制,密码机中存储的数据不可能被其它设备获取,故而在本申请实施例的一种实现方式中,所述辅助设备可以为密码机。需要说明的是,此处提及的密码机可以是通过国家商用密码主管部门鉴定并批准使用的国内自主开发的主机加密设备,也可以是其它主机加密设备,本申请实施例不做具体限定。
需要说明的是,关于“辅助设备基于所述第二私钥分量对待解密数据进行解密,得到第二解密数据”的具体实现方式,可以采用SM9算法中的相关解密算法,此处不详细说明。
S205:所述辅助设备将所述第二解密数据发送给所述第二通信方。
S206:所述第二通信方将接收到的所述第二解密数据发送给所述第一通信方。
S207:所述第一通信方基于所述第一私钥分量对待解密数据进行解密得到第一解密数据。
S208:所述第一通信方基于所述第二解密数据和第一解密数据得到目标解密数据。
辅助设备替代所述第二通信方计算得到第二解密数据之后,可以通过所述第二通信方将第二解密数据发送给所述第一通信方,第一通信方基于所述第二解密数据和所述第一解密数据进行相应的计算,从而得到所述目标解密数据。
需要说明的是,S207可以不必一定在S206之后执行,S207可以在S203和S208之间执行即可。
需要说明的是,关于“所述第一通信方基于所述第二解密数据和第一解密数据得到目标解密数据”的具体实现方式,可以采用SM9算法中的相关解密算法,此处不详细说明。
通过以上描述可知,在本申请实施例中,采用协同解密的方式对待解密数据进行解密,入侵者在未获知第一私钥分量和/或第二私钥分量的前提下,均不可以得到正确的目标解密数据。而且,由于辅助设备中存储的第二私钥分量被其它设备获取的概率小于或者等于预设阈值,基本上可以认为辅助设备中存储的第二私钥分量不会泄露,故而,利用本申请实施例的方案,第二私钥分量不会泄露,故而保证了用户私钥的安全性,从而使得入侵者无法得到正确的目标解密数据,从而保证用户在利用互联网完成相应的业务时的安全性。
在本申请实施例中,为了避免其它设备获取到完整的用户私钥,所述辅助设备将第一私钥分量发送给第二通信方之后,还可以删除该第一私钥分量。从而保证了辅助设备中不存在完整的用户私钥。更进一步地保证了用户私钥的安全性,从而保证用户在利用互联网完成相应的业务时的安全性。
如前文,辅助设备可以存储所述第二私钥分量,考虑到在实际应用中,辅助设备例如密码机的存储空间是有限的。而第二通信方可能需要与多个辅助设备进行多次通信,故而,第二通信方可能会接收到来自多个第一通信方的众多解密请求。可以理解的是,辅助设备对于一个解密请求,则需要保存与该解密请求对应的第二私钥分量。当解密请求的数量比较多时,辅助设备可能无法存储所有的解密请求各自对应的第二私钥分量。故而在本申请实施例的一种实现方式中,所述辅助设备针对接收到的每一个解密请求生成的第二私钥分量可以相同。这样一来,辅助设备即可只需存储一份第二私钥分量即可,从而解决了当解密请求的数量比较多时,辅助设备可能无法存储所有的解密请求各自对应的第二私钥分量的问题。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。