本申请涉及信息安全技术领域,特别是涉及一种基于sm9算法的身份认证方法、装置、计算机设备和存储介质。
背景技术:
随着信息安全技术和互联网技术的发展,越来越多的用户通过客户端向服务器端发送请求,获取服务器端的各种数据服务。一般地,服务器端为了保护用户隐私信息,在提供各种服务之前,会对用户的身份信息进行认证,当认证通过时,为用户提供请求服务,否则拒绝提供服务。
目前,大多数服务器端对客户端的身份认证过程都是采用用户名加口令的方式实现身份认证,这种传统的认证方式存在很多的安全隐患,用户信息容易泄密,因此存在安全性低的问题。
技术实现要素:
基于此,有必要针对上述技术问题,提供一种能够提高安全性的基于sm9算法的身份认证方法、装置、计算机设备和存储介质。
一种基于sm9算法的身份认证方法,所述方法包括:
当触发身份认证请求时,生成随机数和时变参数;
基于密码函数,根据声称方标识,得到声称方标识的元;
根据所述随机数和所述声称方标识的元,确定第一变量元;所述第一变量元为第一加法循环群的元;
根据所述随机数、所述时变参数、所述声称方标识的元、声称方的令牌以及口令,确定第二变量元;所述声称方的令牌由触发身份认证请求之前,向密钥生成中心发送所述声称方标识和所述口令申请得到;所述第二变量元为第二加法循环群的元;
将所述声称方标识、所述时变参数、所述第一变量元以及所述第二变量元发送至验证方;由所述验证方验证所述时变参数的有效性,当所述时变参数的验证结果为有效时,基于双线性配对运算,根据验证方的令牌、所述时变参数、所述第一变量元以及所述第二变量元,得到双线性配对运算的运算结果,根据所述运算结果,判断是否满足预设条件,当满足所述预设条件时,返回认证通过消息至所述声称方。
一种基于sm9算法的身份认证方法,所述方法包括:
接收声称方发送的声称方标识、时变参数、第一变量元以及第二变量元;所述时变参数、所述第一变量元以及所述第二变量元由触发身份认证请求时,所述声称方生成得到,其中,所述第一变量元为第一加法循环群的元,所述第二变量元为第二加法循环群的元;
验证所述时变参数的有效性;
当所述时变参数的验证结果为有效时,基于双线性配对运算,根据验证方的令牌、所述时变参数、所述第一变量元以及所述第二变量元,得到双线性配对运算的运算结果;所述验证方的令牌由触发身份认证请求之前,密钥生成中心根据所述声称方发送的声称方标识和口令得到,并发送至所述验证方;
根据所述运算结果,判断是否满足预设条件,当满足所述预设条件时,返回认证通过消息至所述声称方。
一种基于sm9算法的身份认证方法,所述方法包括:
当触发身份认证请求时,生成第一随机数;
基于密码函数,根据声称方标识,得到声称方标识的元;
根据所述第一随机数和所述声称方标识的元,确定第一变量元;所述第一变量元为第一加法循环群的元;
将所述声称方标识和所述第一变量元发送至验证方;
接收所述验证方发送的第二随机数;所述第二随机数由所述验证方在接收到声称方发送的所述声称方标识和所述第一变量元之后生成;
根据所述第一随机数、所述第二随机数、所述声称方标识的元、声称方的令牌以及口令,确定第二变量元;所述声称方的令牌由触发身份认证请求之前,向密钥生成中心发送所述声称方标识和所述口令申请得到;所述第二变量元为第二加法循环群的元;
将所述第二变量元发送至所述验证方;由所述验证方基于双线性配对运算,根据验证方的令牌、所述第二随机数、所述第一变量元以及所述第二变量元,得到双线性配对运算的运算结果,根据所述运算结果,判断是否满足预设条件,当满足所述预设条件时,返回认证通过消息至所述声称方。
一种基于sm9算法的身份认证方法,所述方法包括:
接收声称方发送的声称方标识和第一变量元;所述第一变量元为第一加法循环群的元,由触发身份认证请求时,所述声称方生成第一随机数,并基于密码函数,根据声称方标识得到声称方标识的元之后,根据所述第一随机数和所述声称方标识的元得到;
生成第二随机数;
将所述第二随机数发送至所述声称方;
接收所述声称方发送的第二变量元;所述第二变量元为第二加法循环群的元;
基于双线性配对运算,根据验证方的令牌、所述第二随机数、所述第一变量元以及所述第二变量元,得到双线性配对运算的运算结果;所述验证方的令牌由触发身份认证请求之前,密钥生成中心根据所述声称方发送的声称方标识和口令得到,并发送至所述验证方;
根据所述运算结果,判断是否满足预设条件,当满足所述预设条件时,返回认证通过消息至所述声称方。
一种基于sm9算法的身份认证装置,所述装置包括:
时变参数生成模块,用于当触发身份认证请求时,生成随机数和时变参数;
第一变量元确定模块,用于基于密码函数,根据声称方标识,得到声称方标识的元;根据所述随机数和所述声称方标识的元,确定第一变量元;所述第一变量元为第一加法循环群的元;
第二变量元确定模块,用于根据所述随机数、所述时变参数、所述声称方标识的元、声称方的令牌以及口令,确定第二变量元;所述声称方的令牌由触发身份认证请求之前,向密钥生成中心发送所述声称方标识和所述口令申请得到;所述第二变量元为第二加法循环群的元;
变量元发送模块,用于将所述声称方标识、所述时变参数、所述第一变量元以及所述第二变量元发送至验证方;由所述验证方验证所述时变参数的有效性,当所述时变参数的验证结果为有效时,基于双线性配对运算,根据验证方的令牌、所述时变参数、所述第一变量元以及所述第二变量元,得到双线性配对运算的运算结果,根据所述运算结果,判断是否满足预设条件,当满足预设条件时,返回认证通过消息至所述声称方。
一种基于sm9算法的身份认证装置,所述装置包括:
变量元接收模块,用于接收声称方发送的声称方标识、时变参数、第一变量元以及第二变量元;所述时变参数、所述第一变量元以及所述第二变量元由触发身份认证请求时,所述声称方生成得到,其中,所述第一变量元为第一加法循环群的元,所述第二变量元为第二加法循环群的元;
时变参数验证模块,用于验证所述时变参数的有效性;
配对运算模块,用于当所述时变参数的验证结果为有效时,基于双线性配对运算,根据验证方的令牌、所述时变参数、所述第一变量元以及所述第二变量元,得到双线性配对运算的运算结果;所述验证方的令牌由触发身份认证请求之前,密钥生成中心根据所述声称方发送的声称方标识和口令得到,并发送至所述验证方;
认证判断模块,用于根据所述运算结果,判断是否满足预设条件,当满足预设条件时,返回认证通过消息至所述声称方。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法步骤。
上述基于sm9算法的身份认证方法、装置、计算机设备和存储介质,声称方通过触发身份认证请求时生成的随机数、时变参数、声称方标识、声称方令牌和口令计算第一变量元和第二变量元,并将时变参数、声称方标识、第一变量元和第二变量元发送至验证方,由验证方验证时变参数的有效性,提高了身份认证过程的时效性,并根据第一变量元和第二变量元,基于双线性配对运算的结果对声称方的身份进行认证。该方法不需要直接通过用户名加口令的方式进行身份认证,解决了现有技术中用户信息容易泄密的问题,提高了身份认证的安全性。
附图说明
图1为一个实施例中基于sm9算法的身份认证系统的应用环境图;
图2为一个实施例中基于sm9算法的身份认证方法的时序图;
图3为一个实施例中应用于声称方的基于sm9算法的身份认证方法的流程示意图;
图4为一个实施例中应用于验证方的基于sm9算法的身份认证方法的流程示意图;
图5为另一个实施例中基于sm9算法的身份认证方法的时序图;
图6为另一个实施例中应用于声称方的基于sm9算法的身份认证方法的流程示意图;
图7为另一个实施例中应用于验证方的基于sm9算法的身份认证方法的流程示意图;
图8为一个实施例中触发身份认证之前获取令牌的步骤的时序图;
图9为一个实施例中基于sm9算法的身份认证装置的结构框图;
图10为一个优选实施例中基于sm9算法的身份认证装置的结构框图;
图11为另一个实施例中基于sm9算法的身份认证装置的结构框图;
图12为一个实施例中计算机设备的内部结构图;
图13为另一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种基于sm9算法的身份认证系统,包括声称方102和验证方104,声称方102可以为终端,验证方104可以为服务器,声称方102通过网络与验证方104进行通信。具体地,当触发身份认证请求时,声称方102生成随机数和时变参数,基于密码函数,根据声称方标识,得到声称方标识的元,根据随机数和声称方标识的元,确定第一变量元,根据随机数、时变参数、声称方标识的元、声称方的令牌以及口令,确定第二变量元,将声称方标识、时变参数、第一变量元以及第二变量元发送至验证方104,验证方104接收声称方102发送的声称方标识、时变参数、第一变量元以及第二变量元,验证时变参数的有效性,当时变参数的验证结果为有效时,基于双线性配对运算,根据验证方的令牌、时变参数、第一变量元以及第二变量元,得到双线性配对运算的运算结果,根据运算结果,判断是否满足预设条件,当满足预设条件时,返回认证通过消息至声称方102。其中,声称方102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,验证方104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。声称方102可用于实现一种基于sm9算法的身份认证方法,服务器端104也可用于实现一种基于sm9算法的身份认证方法。
在一个实施例中,如图2所示,提供了一种基于sm9算法的身份认证方法,以该方法应用于上述图1中的基于sm9算法的身份认证系统为例进行说明。
步骤s201,当触发身份认证请求时,声称方生成随机数和时变参数。
其中,身份认证请求为声称方向验证方发送的身份信息认证请求,由声称方对应的用户触发客户端界面生成。随机数r1为1至n-1之间的随机数,n为第一加法循环群g1或者第二加法循环群g2的阶数n,r1可由随机数发生器产生。时变参数r2为当用户触发身份认证请求时,声称方使用的与发送请求的时间有关的参数,可以为序列号或者时间戳,时间戳需转换成1至n-1之间的数字,n为第一加法循环群g1或者第二加法循环群g2的阶数n。
具体的,若为时间戳,需事先确保声称方和验证方的时钟同步,并且可检测到延迟,验证方接收声称方的消息后需对时间戳进行检测,消息中的时间戳信息与验证方接收该时间戳的时间点之差的绝对值不超过可容忍的时间窗口;若为序列号,需事先确保特定序列号的消息验证方只能接收一次或者在规定时间内验证方只接收一次,声称方维护先前使用过或者将来使用仍将有效的序列号,序列号可由序号计数器产生,可以采用专用程序对序号发生器进行重置或者重启,以更新序列号。
具体地,当用户触发客户端界面的身份认证请求时,声称方生成随机数r1和时变参数r2。
步骤s202,声称方基于密码函数,根据声称方标识,得到声称方标识的元。
其中,密码函数h(u)为基于sm9算法的密码函数,输入为比特串信息u,输出为整数h,即第一加法循环群g1内的一个元pu,h(u)=[h1(u)]p或者[h2(u)]p,其中,p为第一加法循环群g1的生成元,h1(u)为密码函数h1输入u时的输出值,h2(u)为密码函数h2输入u时的输出值,h(u)为元素p的h1(u)倍或者h2(u)倍。声称方标识ida为声称方的身份标识信息,比如名称、邮件地址、电话号码等。声称方标识的元pa为将声称方标识ida输入密码函数h(u)后输出的整数。
具体地,声称方基于密码函数h(u)和声称方标识ida,得到声称方标识的元pa,公式如下:
pa=u(ida)
步骤s203,声称方根据随机数和声称方标识的元,确定第一变量元。
其中,第一变量元x为第一加法循环群g1的元,声称方根据随机数r1和声称方标识的元pa,确定第一变量元x的公式如下:
x=[r1]pa
上述公式中,第一变量元x为声称方标识的元pa的r1倍数值。
步骤s204,声称方根据随机数、时变参数、声称方标识的元、声称方的令牌以及口令,确定第二变量元。
其中,第二变量元y为第二加法循环群g2的元,声称方的令牌tokena由触发身份认证请求之前,声称方向密钥生成中心(kgc)发送声称方标识ida和口令pwd申请得到。口令pwd为声称方拥有的口令。
具体地,声称方根据随机数r1、时变参数r2、声称方标识的元pa、声称方的令牌tokena以及口令pwd,确定第二变量元y的公式如下:
y=[r1r2](tokena-[pwd]pa)
步骤s205,声称方将声称方标识、时变参数、第一变量元以及第二变量元发送至验证方。
具体地,声称方将声称方标识ida、时变参数r2、第一变量元x以及第二变量元y发送至验证方,由验证方对声称方的身份进行认证。
步骤s206,验证方接收声称方发送的声称方标识、时变参数、第一变量元以及第二变量元。
具体地,验证方接收声称方发送的声称方标识ida、时变参数r2、第一变量元x以及第二变量元y。
步骤s207,验证方验证时变参数的有效性。
其中,时变参数r2可以为时间戳或者序列号。具体地,若时变参数r2为时间戳,验证方验证该时间戳与验证方接收该时间戳的时间点之差的绝对值是否超过预设延迟时间,预设延迟时间如1分钟,若未超过,则验证结果为有效,反之则无效,返回验证不通过;若时变参数r2为序列号,验证方验证声称方发送的序列号与验证方的序号计数器生成的序列号是否一致,若一致,则验证结果为有效,反之则无效,返回验证不通过。其中,特定序列号只能生成一次或者在规定的时间内只能生成一次,序列号的序号格式为声称方和验证方双方事先协议好的格式,当序列号发生异常时,声称方和验证方的序号计数器都要进行重启或者重置,也可以预设间隔时间周期进行重启或者重置序号计数器,例如30天重置一次。
步骤s208,当时变参数的验证结果为有效时,验证方基于双线性配对运算,根据验证方的令牌、时变参数、第一变量元以及第二变量元,得到双线性配对运算的运算结果。
其中,验证方的令牌tokenb由触发身份认证请求之前,密钥生成中心根据声称方发送的声称方标识ida和口令pwd得到,并发送至验证方。双线性配对运算e为第一加法循环群g1和第二加法循环群g2到乘法循环群gt的双线性对运算,即g1×g2到gt的双线性对。双线性配对运算e的运算结果可以是一个,也可以是多个。
在一个实施例中,双线性配对运算e的运算结果包括第一运算结果e1和第二运算结果e2,根据验证方的令牌tokenb、时变参数r2、第一变量元x以及第二变量元y,得到第一运算结果e1和第二运算结果e2的公式如下:
e1=e(y,q)
e2=e[x,[r2]tokenb]
其中,q为第二加法循环群g2的生成元。
步骤s209,验证方根据运算结果,判断是否满足预设条件,当满足预设条件时,进入步骤s210。
其中,预设条件根据双线性配对运算的运算结果设置,可以由服务器预先设置也可以由人工预先设置。
具体地,在一个实施例中,验证方根据第一运算结果e1和第二运算结果e2,判断第一运算结果e1和第二运算结果e2是否相等,当两者相等时,判定为满足预设条件,表示声称方的身份认证通过。
步骤s210,验证方返回认证通过消息至声称方。
验证方对声称方的身份认证通过,返回认证通过消息至声称方。
上述基于sm9算法的身份认证方法中,通过声称方向验证方发送声称方标识、时变参数、第一变量元以及第二变量元,其中,第一变量元为根据声称方标识生成,第二变量元为根据声称方的令牌和口令生成,由验证方验证时变参数的有效性,防止声称方发送之前已经验证过的数据,保证了验证过程的时间有效性,当时变参数验证有效时,验证方基于双线性配对运算,利用时变参数和验证方的令牌对第一变量元和第二变量元进行验证,实现对声称方身份信息的认证。上述方法通过声称方向验证方的一次信息传递,效率更高,沿用sm9的系统部署,无需布置全新系统,将声称方的隐私信息拆分成声称方的令牌和口令,不需要直接使用口令进行信息传递,提高了身份认证的安全性,且对声称方的计算能力要求很低,较为复杂的计算,例如双线性配对运算e都放在验证方。
在一个实施例中,如图3所示,提供了一种基于sm9算法的身份认证方法,以该方法应用于图1中的声称方为例进行说明,包括以下步骤:
步骤s302,当触发身份认证请求时,生成随机数和时变参数。
步骤s304,基于密码函数,根据声称方标识,得到声称方标识的元。
步骤s306,根据随机数和声称方标识的元,确定第一变量元;第一变量元为第一加法循环群的元。
步骤s308,根据随机数、时变参数、声称方标识的元、声称方的令牌以及口令,确定第二变量元;声称方的令牌由触发身份认证请求之前,向密钥生成中心发送声称方标识和口令申请得到;第二变量元为第二加法循环群的元。
步骤s310,将声称方标识、时变参数、第一变量元以及第二变量元发送至验证方;由验证方验证时变参数的有效性,当时变参数的验证结果为有效时,基于双线性配对运算,根据验证方的令牌、时变参数、第一变量元以及第二变量元,得到双线性配对运算的运算结果,根据运算结果,判断是否满足预设条件,当满足预设条件时,返回认证通过消息至声称方。
上述基于sm9算法的身份认证方法中,通过声称方向验证方发送声称方标识、时变参数、第一变量元以及第二变量元,其中,第一变量元为根据声称方标识生成,第二变量元为根据声称方的令牌和口令生成,由验证方验证时变参数的有效性,防止声称方发送之前已经验证过的数据,保证了验证过程的时间有效性,当时变参数验证有效时,验证方基于双线性配对运算,利用时变参数和验证方的令牌对第一变量元和第二变量元进行验证,实现对声称方身份信息的认证,上述方法不需要直接使用口令进行信息传递,提高了身份认证的安全性。
在一个实施例中,如图4所示,提供了一种基于sm9算法的身份认证方法,以该方法应用于图1中的验证方为例进行说明,包括以下步骤:
步骤s402,接收声称方发送的声称方标识、时变参数、第一变量元以及第二变量元;时变参数、第一变量元以及第二变量元由触发身份认证请求时,声称方生成得到,其中,第一变量元为第一加法循环群的元,第二变量元为第二加法循环群的元。
步骤s404,验证时变参数的有效性。
步骤s406,当时变参数的验证结果为有效时,基于双线性配对运算,根据验证方的令牌、时变参数、第一变量元以及第二变量元,得到双线性配对运算的运算结果;验证方的令牌由触发身份认证请求之前,密钥生成中心根据声称方发送的声称方标识和口令得到,并发送至验证方。
步骤s408,根据运算结果,判断是否满足预设条件,当满足预设条件时,返回认证通过消息至声称方。
上述基于sm9算法的身份认证方法中,验证方通过接收声称方发送的声称方标识、时变参数、第一变量元以及第二变量元,其中,第一变量元为根据声称方标识生成,第二变量元为根据声称方的令牌和口令生成,验证时变参数的有效性,防止声称方发送之前已经验证过的数据,保证了验证过程的时间有效性,当时变参数验证有效时,基于双线性配对运算,利用时变参数和验证方的令牌对第一变量元和第二变量元进行验证,实现对声称方身份信息的认证,上述方法不需要直接使用口令进行信息传递,提高了身份认证的安全性。
在另一个实施例中,如图5所示,提供了一种基于sm9算法的身份认证方法,以该方法应用于上述图1中的基于sm9算法的身份认证系统为例进行说明。
步骤s501,当触发身份认证请求时,声称方生成第一随机数。
其中,第一随机数为r1为1至n-1之间的随机数,n为第一加法循环群g1或者第二加法循环群g2的阶数n,r1可由随机数发生器产生。
步骤s502,声称方基于密码函数,根据声称方标识,得到声称方标识的元。
具体地,声称方基于密码函数h(u)和声称方标识ida,得到声称方标识的元pa,公式如下:
pa=h(ida)
步骤s503,声称方根据第一随机数和声称方标识的元,确定第一变量元。
其中,第一变量元x为第一加法循环群g1的元,声称方根据随机数r1和声称方标识的元pa,确定第一变量元x的公式如下:
x=[r1]pa
上述公式中,第一变量元x为声称方标识的元pa的r1倍数值。
步骤s504,声称方将声称方标识和第一变量元发送至验证方。
具体地,声称方将声称方标识ida和第一变量元x发送至验证方。
步骤s505,验证方接收声称方发送的声称方标识和第一变量元。
具体地,验证方接收声称方发送的声称方标识ida和第一变量元x。
步骤s506,验证方生成第二随机数。
其中,第二随机数r2为1至n-1之间的随机数,n为第一加法循环群g1或者第二加法循环群g2的阶数n,r2可由随机数发生器产生。具体地,验证方的随机数发生器产生第二随机数r2。
步骤s507,验证方将第二随机数发送至声称方。
具体地,验证方将第二随机数r2发送至声称方。
步骤s508,声称方接收验证方发送的第二随机数。
具体地,声称方接收声称方发送的第二随机数r2。
步骤s509,声称方根据第一随机数、第二随机数、声称方标识的元、声称方的令牌以及口令,确定第二变量元。
其中,声称方的令牌tokena由触发身份认证请求之前,声称方向密钥生成中心发送声称方标识ida和口令pwd申请得到,第二变量元y为第二加法循环群g2的元。
具体地,声称方根据第一随机数r1、第二随机数r2、声称方标识的元pa、声称方的令牌tokena以及口令pwd,确定第二变量元y的公式如下:
y=[r1r2](tokena-[pwd]pa)
步骤s510,声称方将第二变量元发送至验证方。
具体地,声称方将第二变量元y发送至验证方。
步骤s511,验证方接收声称方发送的第二变量元。
具体地,验证方接收声称方发送的第二变量元y。
步骤s512,验证方基于双线性配对运算,根据验证方的令牌、第二随机数、第一变量元以及第二变量元,得到双线性配对运算的运算结果。
其中,验证方的令牌tokenb由触发身份认证请求之前,密钥生成中心根据声称方发送的声称方标识ida和口令pwd得到,并发送至验证方。双线性配对运算e为第一加法循环群g1和第二加法循环群g2到乘法循环群gt的双线性对运算,即g1×g2到gt的双线性对。双线性配对运算e的运算结果可以是一个,也可以是多个。
在一个实施例中,双线性配对运算e的运算结果包括第一运算结果e1和第二运算结果e2,根据验证方的令牌tokenb、时变参数r2、第一变量元x以及第二变量元y,得到第一运算结果e1和第二运算结果e2的公式如下:
e1=e(y,q)
e2=e[x,[r2]tokenb]
其中,q为第二加法循环群g2的生成元。
步骤s513,验证方根据运算结果,判断是否满足预设条件,当满足预设条件时,进入步骤s514。
其中,预设条件根据双线性配对运算的运算结果设置,可以由服务器预先设置也可以由人工预先设置。
具体地,在一个实施例中,验证方根据第一运算结果e1和第二运算结果e2,判断第一运算结果e1和第二运算结果e2是否相等,当两者相等时,判定为满足预设条件,表示声称方的身份认证通过。
步骤s514,验证方返回认证通过消息至声称方。
验证方对声称方的身份认证通过,返回认证通过消息至声称方。
上述基于sm9算法的身份认证方法中,通过声称方向验证方发送声称方标识和第一变量元后,其中,第一变量元为根据声称方标识生成,验证方生成第二随机数并发送至声称方,声称方根据第一随机数、第二随机数、声称方的令牌以及口令,确定第二变量元并发送至验证方,验证方接收到该第二变量元后,基于双线性配对运算,利用验证方的令牌、第二随机数对第一变量元和第二变量元进行验证,实现对声称方身份信息的认证。上述方法通过声称方和验证方的多次信息传递,安全性更高,沿用sm9的系统部署,无需布置全新系统,将声称方的隐私信息拆分成声称方的令牌和口令,不需要直接使用口令进行数据传递,提高了身份认证的安全性,且对声称方的计算能力要求很低,较为复杂的计算,例如双线性配对运算e都放在验证方。
在一个实施例中,如图6所示,提供了一种基于sm9算法的身份认证方法,以该方法应用于图1中的声称方为例进行说明,包括以下步骤:
步骤s602,当触发身份认证请求时,生成第一随机数。
步骤s604,基于密码函数,根据声称方标识,得到声称方标识的元。
步骤s606,根据第一随机数和声称方标识的元,确定第一变量元;第一变量元为第一加法循环群的元。
步骤s608,将声称方标识和第一变量元发送至验证方。
步骤s610,接收验证方发送的第二随机数;第二随机数由验证方在接收到声称方发送的声称方标识和第一变量元之后生成。
步骤s612,根据第一随机数、第二随机数、声称方标识的元、声称方的令牌以及口令,确定第二变量元;声称方的令牌由触发身份认证请求之前,向密钥生成中心发送声称方标识和口令申请得到;第二变量元为第二加法循环群的元。
步骤s614,将第二变量元发送至验证方;由验证方基于双线性配对运算,根据验证方的令牌、第二随机数、第一变量元以及第二变量元,得到双线性配对运算的运算结果,根据运算结果,判断是否满足预设条件,当满足预设条件时,返回认证通过消息至声称方。
上述基于sm9算法的身份认证方法中,通过声称方向验证方发送声称方标识和第一变量元后,其中,第一变量元为根据声称方标识生成,验证方生成第二随机数并发送至声称方,声称方根据第一随机数、第二随机数、声称方的令牌以及口令,确定第二变量元并发送至验证方,验证方接收到该第二变量元后,基于双线性配对运算,利用验证方的令牌、第二随机数对第一变量元和第二变量元进行验证,实现对声称方身份信息的认证。上述方法通过声称方和验证方的多次信息传递,安全性更高,沿用sm9的系统部署,无需布置全新系统,将声称方的隐私信息拆分成声称方的令牌和口令,不需要直接使用口令进行数据传递,提高了身份认证的安全性,且对声称方的计算能力要求很低,较为复杂的计算,例如双线性配对运算e都放在验证方。
在一个实施例中,如图7所示,提供了一种基于sm9算法的身份认证方法,以该方法应用于图1中的验证方为例进行说明,包括以下步骤:
步骤s702,接收声称方发送的声称方标识和第一变量元;第一变量元为第一加法循环群的元,由触发身份认证请求时,声称方生成第一随机数,并基于密码函数,根据声称方标识得到声称方标识的元之后,根据第一随机数和声称方标识的元得到。
步骤s704,生成第二随机数。
步骤s706,将第二随机数发送至声称方。
步骤s708,接收声称方发送的第二变量元;第二变量元为第二加法循环群的元。
步骤s710,基于双线性配对运算,根据验证方的令牌、第二随机数、第一变量元以及第二变量元,得到双线性配对运算的运算结果;验证方的令牌由触发身份认证请求之前,密钥生成中心根据声称方发送的声称方标识和口令得到,并发送至验证方。
步骤s712,根据运算结果,判断是否满足预设条件,当满足预设条件时,返回认证通过消息至声称方。
上述基于sm9算法的身份认证方法中,通过验证方接收声称方发送的声称方标识和第一变量元后,生成第二随机数并发送至声称方,声称方根据第一随机数、第二随机数、声称方的令牌以及口令,确定第二变量元并发送至验证方,验证方接收到该第二变量元后,基于双线性配对运算,利用验证方的令牌、第二随机数对第一变量元和第二变量元进行验证,实现对声称方身份信息的认证。上述方法通过声称方和验证方的多次信息传递,安全性更高,沿用sm9的系统部署,无需布置全新系统,将声称方的隐私信息拆分成声称方的令牌和口令,不需要直接使用口令进行数据传递,提高了身份认证的安全性,且对声称方的计算能力要求很低,较为复杂的计算,例如双线性配对运算e都放在验证方。
在一个实施例中,如图8所示,当触发身份认证请求之前,还包括:向密钥生成中心发送声称方标识和口令;声称方标识和口令用于申请声称方的令牌和验证方的令牌;接收密钥生成中心发送的声称方的令牌并存储。
具体地,声称方向密钥生成中心(kgc)发送声称方标识ida和口令pwd后,其中,声称方标识ida和口令pwd用以申请声称方的令牌tokena和验证方的令牌tokenb,密钥生成中心(kgc)产生随机数s作为主私钥,基于密码函数,密钥生成中心(kgc)根据声称方标识ida生成声称方标识的元pa,生成公式如下:
pa=h(ida)
密钥生成中心(kgc)根据声称方标识的元pa生成声称方的令牌tokena,生成公式如下:
tokena=[s pwd]pa
其中,s为1至n-1的随机数,为密钥生成中心kgc拥有,pwd为声称方拥有的口令。
密钥生成中心(kgc)生成验证方的令牌tokenb的公式如下:
tokenb=[s]q
其中,s为1至n-1的随机数,为密钥生成中心kgc拥有,q为第二加法循环群g2的生成元。
密钥生成中心(kgc)生成声称方的令牌tokena和验证方的令牌tokenb后,发送声称方的令牌tokena至声称方,发送验证方的令牌tokenb至验证方。
本实施例中,只需声称方向密钥生成中心发送声称方标识和口令,声称方即可获取声称方的令牌,验证方即可获取验证方的令牌,由此实现身份认证的初始化,后续声称方和验证方再次进行身份认证时,无需再进行身份认证的初始化获得令牌,便可进行身份认证。
应该理解的是,虽然图2-8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-8中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图9所示,提供了一种基于sm9算法的身份认证装置900,应用于声称方,包括:时变参数生成模块902、第一变量元确定模块904、第二变量元确定模块906和变量元发送模块908,其中:
时变参数生成模块902,用于当触发身份认证请求时,生成随机数和时变参数。
第一变量元确定模块904,用于基于密码函数,根据声称方标识,得到声称方标识的元;根据随机数和声称方标识的元,确定第一变量元;第一变量元为第一加法循环群的元。
第二变量元确定模块906,用于根据随机数、时变参数、声称方标识的元、声称方的令牌以及口令,确定第二变量元;声称方的令牌由触发身份认证请求之前,向密钥生成中心发送声称方标识和口令申请得到;第二变量元为第二加法循环群的元。
变量元发送模块908,用于将声称方标识、时变参数、第一变量元以及第二变量元发送至验证方;由验证方验证时变参数的有效性,当时变参数的验证结果为有效时,基于双线性配对运算,根据验证方的令牌、时变参数、第一变量元以及第二变量元,得到双线性配对运算的运算结果,根据运算结果,判断是否满足预设条件,当满足预设条件时,返回认证通过消息至声称方。
在一个实施例中,如图10所示,基于sm9算法的身份认证装置900还包括初始化模块901,用于当触发身份认证请求之前,向密钥生成中心发送声称方标识和口令;声称方标识和口令用于申请声称方的令牌和验证方的令牌;接收密钥生成中心发送的声称方的令牌并存储。
在一个实施例中,如图11所示,提供了一种基于sm9算法的身份认证装置1100,应用于验证方,包括:变量元接收模块1102、时变参数验证模块1104、配对运算模块1106和认证判断模块1108,其中:
变量元接收模块1102,用于接收声称方发送的声称方标识、时变参数、第一变量元以及第二变量元;时变参数、第一变量元以及第二变量元由触发身份认证请求时,声称方生成得到,其中,第一变量元为第一加法循环群的元,第二变量元为第二加法循环群的元。
时变参数验证模块1104,用于验证时变参数的有效性。
配对运算模块1106,用于当时变参数的验证结果为有效时,基于双线性配对运算,根据验证方的令牌、时变参数、第一变量元以及第二变量元,得到双线性配对运算的运算结果;验证方的令牌由触发身份认证请求之前,密钥生成中心根据声称方发送的声称方标识和口令得到,并发送至验证方。
认证判断模块1108,用于根据运算结果,判断是否满足预设条件,当满足预设条件时,返回认证通过消息至声称方。
在一个实施例中,双线性配对运算的运算结果包括第一运算结果和第二运算结果;认证判断模块1108还用于根据第一运算结果和第二运算结果,判断第一运算结果和第二运算结果是否相等,当相等时,则认证通过,返回认证通过消息至声称方。
关于基于sm9算法的身份认证装置的具体限定可以参见上文中对于基于sm9算法的身份认证方法的限定,在此不再赘述。上述基于sm9算法的身份认证装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图12所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储令牌、变量元数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于sm9算法的身份认证方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、运营商网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种基于sm9算法的身份认证方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图12-13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-onlymemory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(randomaccessmemory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(staticrandomaccessmemory,sram)或动态随机存取存储器(dynamicrandomaccessmemory,dram)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
1.一种基于sm9算法的身份认证方法,应用于声称方,所述方法包括:
当触发身份认证请求时,生成随机数和时变参数;
基于密码函数,根据声称方标识,得到声称方标识的元;
根据所述随机数和所述声称方标识的元,确定第一变量元;所述第一变量元为第一加法循环群的元;
根据所述随机数、所述时变参数、所述声称方标识的元、声称方的令牌以及口令,确定第二变量元;所述声称方的令牌由触发身份认证请求之前,向密钥生成中心发送所述声称方标识和所述口令申请得到;所述第二变量元为第二加法循环群的元;
将所述声称方标识、所述时变参数、所述第一变量元以及所述第二变量元发送至验证方;由所述验证方验证所述时变参数的有效性,当所述时变参数的验证结果为有效时,基于双线性配对运算,根据验证方的令牌、所述时变参数、所述第一变量元以及所述第二变量元,得到双线性配对运算的运算结果,根据所述运算结果,判断是否满足预设条件,当满足所述预设条件时,返回认证通过消息至所述声称方。
2.一种基于sm9算法的身份认证方法,应用于验证方,所述方法包括:
接收声称方发送的声称方标识、时变参数、第一变量元以及第二变量元;所述时变参数、所述第一变量元以及所述第二变量元由触发身份认证请求时,所述声称方生成得到,其中,所述第一变量元为第一加法循环群的元,所述第二变量元为第二加法循环群的元;
验证所述时变参数的有效性;
当所述时变参数的验证结果为有效时,基于双线性配对运算,根据验证方的令牌、所述时变参数、所述第一变量元以及所述第二变量元,得到双线性配对运算的运算结果;所述验证方的令牌由触发身份认证请求之前,密钥生成中心根据所述声称方发送的声称方标识和口令得到,并发送至所述验证方;
根据所述运算结果,判断是否满足预设条件,当满足所述预设条件时,返回认证通过消息至所述声称方。
3.一种基于sm9算法的身份认证方法,应用于声称方,所述方法包括:
当触发身份认证请求时,生成第一随机数;
基于密码函数,根据声称方标识,得到声称方标识的元;
根据所述第一随机数和所述声称方标识的元,确定第一变量元;所述第一变量元为第一加法循环群的元;
将所述声称方标识和所述第一变量元发送至验证方;
接收所述验证方发送的第二随机数;所述第二随机数由所述验证方在接收到声称方发送的所述声称方标识和所述第一变量元之后生成;
根据所述第一随机数、所述第二随机数、所述声称方标识的元、声称方的令牌以及口令,确定第二变量元;所述声称方的令牌由触发身份认证请求之前,向密钥生成中心发送所述声称方标识和所述口令申请得到;所述第二变量元为第二加法循环群的元;
将所述第二变量元发送至所述验证方;由所述验证方基于双线性配对运算,根据验证方的令牌、所述第二随机数、所述第一变量元以及所述第二变量元,得到双线性配对运算的运算结果,根据所述运算结果,判断是否满足预设条件,当满足所述预设条件时,返回认证通过消息至所述声称方。
4.一种基于sm9算法的身份认证方法,应用于验证方,所述方法包括:
接收声称方发送的声称方标识和第一变量元;所述第一变量元为第一加法循环群的元,由触发身份认证请求时,所述声称方生成第一随机数,并基于密码函数,根据声称方标识得到声称方标识的元之后,根据所述第一随机数和所述声称方标识的元得到;
生成第二随机数;
将所述第二随机数发送至所述声称方;
接收所述声称方发送的第二变量元;所述第二变量元为第二加法循环群的元;
基于双线性配对运算,根据验证方的令牌、所述第二随机数、所述第一变量元以及所述第二变量元,得到双线性配对运算的运算结果;所述验证方的令牌由触发身份认证请求之前,密钥生成中心根据所述声称方发送的声称方标识和口令得到,并发送至所述验证方;
根据所述运算结果,判断是否满足预设条件,当满足所述预设条件时,返回认证通过消息至所述声称方。
5.根据权利要求1和3任意一项所述的方法,其特征在于,所述当触发身份认证请求之前,还包括:
向密钥生成中心发送所述声称方标识和所述口令;所述声称方标识和所述口令用于申请所述声称方的令牌和所述验证方的令牌;
接收所述密钥生成中心发送的所述声称方的令牌并存储。
6.根据权利要求2和4任意一项所述的方法,其特征在于,所述双线性配对运算的运算结果包括第一运算结果和第二运算结果;所述根据所述运算结果,判断是否满足预设条件,当满足所述预设条件时,返回认证通过消息至所述声称方,包括:
根据第一运算结果和第二运算结果,判断所述第一运算结果和所述第二运算结果是否相等,当相等时,则认证通过,返回认证通过消息至所述声称方。
7.一种基于sm9算法的身份认证装置,应用于声称方,其特征在于,所述装置包括:
时变参数生成模块,用于当触发身份认证请求时,生成随机数和时变参数;
第一变量元确定模块,用于基于密码函数,根据声称方标识,得到声称方标识的元;根据所述随机数和所述声称方标识的元,确定第一变量元;所述第一变量元为第一加法循环群的元;
第二变量元确定模块,用于根据所述随机数、所述时变参数、所述声称方标识的元、声称方的令牌以及口令,确定第二变量元;所述声称方的令牌由触发身份认证请求之前,向密钥生成中心发送所述声称方标识和所述口令申请得到;所述第二变量元为第二加法循环群的元;
变量元发送模块,用于将所述声称方标识、所述时变参数、所述第一变量元以及所述第二变量元发送至验证方;由所述验证方验证所述时变参数的有效性,当所述时变参数的验证结果为有效时,基于双线性配对运算,根据验证方的令牌、所述时变参数、所述第一变量元以及所述第二变量元,得到双线性配对运算的运算结果,根据所述运算结果,判断是否满足预设条件,当满足预设条件时,返回认证通过消息至所述声称方。
8.一种基于sm9算法的身份认证装置,应用于验证方,其特征在于,所述装置包括:
变量元接收模块,用于接收声称方发送的声称方标识、时变参数、第一变量元以及第二变量元;所述时变参数、所述第一变量元以及所述第二变量元由触发身份认证请求时,所述声称方生成得到,其中,所述第一变量元为第一加法循环群的元,所述第二变量元为第二加法循环群的元;
时变参数验证模块,用于验证所述时变参数的有效性;
配对运算模块,用于当所述时变参数的验证结果为有效时,基于双线性配对运算,根据验证方的令牌、所述时变参数、所述第一变量元以及所述第二变量元,得到双线性配对运算的运算结果;所述验证方的令牌由触发身份认证请求之前,密钥生成中心根据所述声称方发送的声称方标识和口令得到,并发送至所述验证方;
认证判断模块,用于根据所述运算结果,判断是否满足预设条件,当满足预设条件时,返回认证通过消息至所述声称方。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
技术总结