一种基于SM2和SM9数字签名算法的移动终端认证方法与系统
文献发布时间:2023-06-19 11:39:06
技术领域
本发明涉及信息安全技术,尤其涉及一种基于SM2和SM9数字签名算法的移动终端认证方法与系统。
背景技术
数字签名是保障网络安全的密码技术之一,能够保证数据的完整性、真实性和不可抵赖性。国家密码管理局于2010年12月17日和2016年3月28日,国家密码管理局分别发布了SM2数字签名算法和SM9数字签名算法。2017年11月3日,在第55次ISO/IEC联合技术委员会信息安全技术分委员会(SC27)德国柏林会议上,SM2与SM9数字签名算法成为ISO/IEC国际标准,进入标准发布阶段。
随着移动终端的广泛应用,移动终端的安全认证受到了广泛关注。与传统密码设备不同,移动终端设备只能以软件的形式存储密钥。攻击者通过权限提升即可获得密钥,严重威胁移动互联网的安全。如何实现私钥在移动终端的安全存储并进而实现移动终端的安全认证成为亟待解决的问题。
本发明设计了一种基于SM2和SM9数字签名算法的移动终端认证方法,同以往方法相比,攻击者即使获得凭证,也不能通过口令猜测获得私钥,大大提供了移动终端的安全性。
发明内容
本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种基于SM2和SM9数字签名算法的移动终端认证方法与系统。
本发明解决其技术问题所采用的技术方案是:一种基于SM2和SM9数字签名算法的移动终端认证方法,包括以下步骤:
1)通过服务器端生成系统公钥和私钥,具体如下:
服务器端以SM2算法的推荐椭圆曲线作为系统曲线,在集合
其中,G为循环群
2)生成用户U
2.1)用户U
2.2)服务器端根据系统私钥和用户身份标识计算用户的私钥D
2.3)用户U
CRE
2.4)最后用户U
3)根据用户U
3.1)用户U
用户U
用户U
4)服务器端对给定消息m和用户输出的签名σ=(T
4.1)服务器端计算e=h(m||T
4.2)服务器端计算W=s·G+t·P
4.3)如果成立,则接收该消息,否则拒绝该消息。
本发明还提供一种基于SM2和SM9数字签名算法的移动终端认证系统,包括:
初始化模块,用于通过服务器端生成系统公钥和私钥,具体如下:
服务器端以SM2算法的推荐椭圆曲线作为系统曲线,在集合
其中,G为循环群
用户私钥生成模块,用于生成用户U
1)用户U
2)服务器端根据系统私钥和用户身份标识计算用户的私钥D
3)用户U
CRE
4)最后用户U
签名生成模块,用于根据用户U
1)用户U
2)用户U
3)用户U
验证模块,用于服务器端对给定消息m和用户输出的签名σ=(T
1)服务器端计算e=h(m||T
2)服务器端计算W=s·G+t·P
3)如果成立,则接收该消息,否则拒绝该消息。
本发明产生的有益效果是:目前,SM2和SM9数字签名算法对应的私钥不能直接存储在移动设备中,需要专门的密码设备来保护密钥的安全性。在本发明设计的认证方法中,用户的私钥不需要专门的密码设备进行存储,仅需要口令即可进行安全保护。同时,本发明是针对国产SM2和SM9签名算法设计,可满足自主可控的国产商用密码应用合规性要求。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例的方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本实施例中的参数解释如下:
n:大素数;
G:循环群
mod n:模n运算;
h(·):密码杂凑函数;
m;消息值;
σ:签名值;
||:比特串拼接;
S:服务器;
U
pw
id
如图1所示,一种基于SM2和SM9数字签名算法的移动终端认证方法,包括以下步骤:
1)初始化步骤Setup:服务器S执行下述步骤生成系统公钥和私钥;
1.1)服务器S选择SM2算法的推荐椭圆曲线作为系统曲线;
1.2)服务器S在集合
1.3)服务器S计算系统公钥P
1.4)服务器S公开系统公钥P
2)密钥生成步骤KeyGen:服务器S和用户U
2.1)用户U
2.2)服务器S计算用户的私钥
2.3)用户U
3)签名生成步骤Sign:给定消息m,用户U
3.1)用户U
3.2)用户U
3.3)用户U
3.4)用户U
4)验证步骤Verify:给定消息m和用户签名σ=(T
4.1)服务器S计算e=h(m||T
4.2)服务器S计算W=s·G+t·P
4.3)如果成立,则接收该消息,否则拒绝该消息。
根据上述方法,我们还提供对应的一种基于SM2和SM9数字签名算法的移动终端认证系统,包括:
初始化模块,用于服务器S执行下述步骤生成系统公钥和私钥;
1)服务器S选择SM2算法的推荐椭圆曲线作为系统曲线;
2)服务器S在集合
3)服务器S计算系统公钥P
4)服务器S公开系统公钥P
密钥生成模块,用于服务器S和用户U
1)用户U
2)服务器S计算用户的私钥
3)用户U
签名生成模块,用于根据给定消息m,用户U
1)用户U
2)用户U
3)用户U
4)用户U
验证模块,用于根据给定消息m和用户签名σ=(T
1)服务器S计算e=h(m||T
2)服务器S计算W=s·G+t·P
3)如果成立,则接收该消息,否则拒绝该消息。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。