基于SM2密码算法的信息服务实体跨域认证方法与流程

文档序号:18884814发布日期:2019-10-15 20:44阅读:301来源:国知局
基于SM2密码算法的信息服务实体跨域认证方法与流程

本发明属于通信技术领域,更进一步涉及网络通信技术领域中的一种基于sm2密码算法的信息服务实体跨域认证方法。本发明可用于通信网络中多场景多用户情况下信任域内的用户发送请求访问另一信任域内提供服务的服务端时的跨域身份验证过程。



背景技术:

通信网络中多场景多用户情况下的信息服务实体ise(informationservicesentity)是指在互联网中提供公开的、共享的信息的服务活动提供者。信息服务实体ise的交互方式直接影响信息服务的安全,随着移动终端的轻量级化,在多种场景下,例如网站间资源互享、共同签署合同等场景中多个用户的之间的信息交互,随之产生了越来越频繁的多信任域结构模式中的信息服务实体ise之间的交互,因此能否保证资源受限的移动终端用户接受安全高效的信息服务成为主要需求。目前对信息服务实体ise仅是信任域内部简单的身份管理与认证,用户需要访问外域信息服务实体ise时,就存在跨信任域身份认证问题。

湖北安标信息技术有限公司在其申请的专利文献“基于考评服务平台的跨域认证方法”(申请号:201310710884.5,申请公布号:cn103731269a)中提出了一种身份的跨域认证方法。该方法的步骤是:在至少两个信任域内,当第一域访问第二个域时,用户登录系统,验证通过登录成功。将登录用户的基本信息序列化,再通过md5加密算法将序列化后的用户信息字节流保存到第一域的cookie中。之后,当第一域请求第二个域时,获取第一域的cookie中的key值,将key值经过md5解密,然后反序列化,反序列化是将序列化后的用户信息字节流转化为用户对象。最后,判断反序列化后的用户信息是否合法,如果合法,则允许跨域,反之不允许跨域,跳转系统错误页面。该方法存在的不足之处是,过程中加密算法采用的是一种散列算法md5,通信过程中遇到碰撞攻击容易导致用户信息泄露,是不安全的。其次,该方法的信息处理是在两个信任域之间,对于通信双方会有比较大的通信量,一旦有较多信任域,域之间通信会交错复杂,可能会出现多条认证路径和死循环的现象,使标识的验证难于实现。

刘莉、金正平在其发表的论文“一个基于rsa的无证书多重签名方案”(四川大学学报工程科学版第48卷第二期2016年3月)中提出了一个基于rsa密码算法的无证书多重签名实现跨域认证方法。该方法的步骤是:(1)系统建立,初始化rsa密码算法参数(2)密钥生成中心计算并生成信息服务实体的公钥和私钥,用户发送请求访问信息服务实体(3)信息服务实体对待签署的消息、系统参数、所有签名人身份进行多重签名,将签名等信息发送给验证方进行验证(4)验证方检验多重签名是否合法,验证通过允许用户访问信息服务实体,实现跨域认证。该方法实现了基于rsa密码算法进行签名实现跨域认证。该方法基于rsa密码算法采用无证书密码体制实现跨域认证,避免了基于身份的多重签名方案中密钥托管问题,相对有证书的签发方式,有更低的通信代价和计算代价。但是,该方法仍然存在的不足之处是:密钥生成中心在生成信息服务实体的公钥和私钥的过程中,基于rsa密码算法所产生的公钥位数至少为1024位,公钥位数太长导致密钥生成速度慢,签名的签发速度慢,从而跨域认证的速度慢。随着计算机运算速度的提高和分布式计算的发展,加上因子分解方法的改进,已经可以将低位数的rsa密码算法所产生的的密钥破解,而且在通信过程中系统参数、签名等信息被获取后,系统会受到重放攻击,所以采用rsa密码算法进行签名安全性低,跨域认证的安全性低。



技术实现要素:

本发明的目的在于针对上述现有技术存在的缺陷,提出了一种基于sm2密码算法的信息服务实体跨域认证方法,用于解决现如今信息服务实体跨域认证速度慢和安全性低的问题。

实现本发明目的的思路是,基于sm2密码算法对身份验证过程中的用户标签签名,标签公证中心验证用户的标签,服务端根据验证结果决定是否对用户开启服务。

本发明采用的技术方案包括如下步骤:

(1)生成群公钥和群私钥:

(1a)密钥生成中心随机选择一个元素c∈zq,其中,∈表示属于符号,zq表示q阶的整数串,q表示一个大素数;

(1b)密钥生成中心将元素c作为群私钥s并保存,将群私钥s和基点g的乘积作为群公钥,g表示椭圆曲线上阶数为n的基点,n表示一个大素数;

(2)签发标签:

(2a)标签公证中心在整数串zq中选择一个随机数m作为信任域da内发送请求的用户的私钥,将发送请求的用户的私钥与基点g的乘积作为信任域da内发送请求用户的公钥;

(2b)标签公证中心将信任域da内发送请求用户的私钥和公钥通过安全信道发送给用户;

(2c)标签公证中心使用群公钥为信任域da内发送请求用户签发标签;

(3)计算杂凑值:

(3a)按照下式,计算信任域da内发送请求用户的临时私钥和临时公钥:

sku=h((sk×p)||t),pku=sku×g,

其中,sku表示信任域da内发送请求用户u的临时私钥,h(·)表示安全散列函数,sk表示信任域da内发送请求用户的私钥,p表示群公钥,‖表示级联关系符号,t表示时间戳,pku表示信任域da内发送请求用户u的临时公钥;

(3b)按照下式,计算信任域da内发送请求的用户身份信息的杂凑值:

zu=h256(idu||ωu||a||b||xg||yg||xu||yu),

其中,zu表示发送请求用户u在信任域da内的身份信息的杂凑值,h256(·)表示输出长度为256比特的杂凑函数,idu表示发送请求用户u在信任域da内的身份标识,ωu表示发送请求用户u在信任域da内的身份标识idu的长度值,xg、yg分别表示椭圆曲线上基点g的横纵坐标值,xu、yu分别表示信任域da内发送请求用户临时公钥的横纵坐标值;

(3c)按照下式,计算待签名标签的杂凑值:

e1=hv(l||zu),

其中,e1表示待签名标签的杂凑值,hv(·)表示密码杂凑函数,v表示带签名标签摘要长度,l表示标签信息;

(4)利用sm2密码算法,计算信任域da内发送请求的用户的标签的签名:

(4a)按照下式,计算用户的标签的签名中的第一部分标识:

r1=(e1+x1)modn

其中,r表示信任域da内发送请求的用户标签的签名中的第一部分标识,x1、y1分别表示椭圆曲线上任意点β的横坐标和纵坐标的值,β=(x1,y1)=[k]g,k表示一随机数,k∈[1,n-1],[·]表示取整操作,mod表示求余操作;

(4b)按照下式,计算信任域da内发送请求用户的标签的签名中的第二部分标识:

ψ1=(1+sku)-1(k-r1×sku)modn,

其中,ψ1表示信任域da内发送请求的用户标签的签名中的第二部分标识;

(4c)将签名的第一部分标识与第二部分标识组合为信任域da内发送请求的用户标签的签名;

(5)验证信任域da内发送请求的用户标签的签名是否合法:

(5a)信任域da内发送请求用户将签发标签、用户身份、用户签名标签时的时间戳、用户标签的签名发送给标签公证中心;

(5b)标签公证中心从标签中获取信任域da内发送请求用户的公钥,按照下式,计算标签公证中心的临时私钥与临时公钥:

skidp=h((pk×s)||t),pkidp=skidp×g,

其中,skidp表示标签公证中心idp的临时私钥,pk表示信任域da内发送请求用户的公钥,pkidp表示标签公证中心idp的临时公钥;

(5c)按照步骤(3)和步骤(4)中相同的方法,得到标签公证中心对标签的签名;

(5d)将满足认证条件的信任域da内发送请求用户对标签的签名认定为合法签名,将信任域da内发送请求用户对标签的签名认定为不合法签名;

(6)计算标签公证中心验证信任域da内发送请求用户标签的签名后标签的杂凑值:

(6a)按照下式,计算验证信任域da内发送请求用户标签的签名后标签公证中心的身份信息的杂凑值:

zidp=h256(ididp||ωidp||a||b||xg||yg||xidp||yidp),

其中,zidp表示验证信任域da内发送请求用户标签的签名后标签公证中心的身份信息的杂凑值,ididp表示标签公证中心idp的身份标识,ωidp表示标签公证中心idp的身份标识ididp的长度值,xidp、yidp分别表示群公钥的横纵坐标;

(6b)按照下式,计算验证信任域da内发送请求用户标签的签名后标签的杂凑值:

e2=hv(l||zidp||b),

其中,e2表示验证信任域da内发送请求用户标签的签名后标签的杂凑值,b表示一个因子,当用户标签的签名为合法签名时该因子取值为1,当用户标签的签名为不合法签名时该因子取值为0;

(7)利用sm2密码算法,计算标签公证中心验证信任域da内发送请求用户标签的签名后对标签的签名:

(7a)按照下式,计算标签公证中心验证信任域da内发送请求用户标签的签名后对标签的签名的第一部分标识:

r2=(e2+x1)modn

其中,r2表示标签公证中心验证用户标签的签名后对标签的签名的第一部分标识;

(7b)按照下式,计算标签公证中心验证信任域da内发送请求用户标签的签名后对标签的签名的第二部分标识:

ψ2=(1+s)-1(k-r2×s)modn,

其中,ψ2表示标签公证中心验证用户标签的签名后对标签的签名的第二部分标识;

(7c)将签名的第一部分标识与第二部分标识组合为标签公证中心验证用户标签的签名后对标签的签名;

(8)验证标签公证中心验证信任域da内发送请求用户标签的签名后对标签的签名:

(8a)标签公证中心将信任域da内发送请求用户标签、标签公证中心身份、因子b、标签公证中心验证用户标签的签名后对标签的签名发送给另一信任域dc内提供服务的服务端;

(8b)信任域dc内的服务端按照与步骤(6)相同的计算方法,得到标签公证中心验证用户标签的签名后标签的杂凑值e3;

(8c)按照下式,计算椭圆曲线上验证点的坐标:

(x2,y2)=[ψ2]g+[(ψ2+r2)modn]p,

其中,(x2,y2)表示椭圆曲线上的验证点的坐标;

(8d)信任域dc内的服务端判断签名是否满足合法条件,若是,则执行步骤(8e),否则,执行步骤(10);

(8e)判断因子b的值是否为1,若是,执行步骤(9),否则,执行步骤(10);

(9)服务端开启服务;

(10)服务端拒绝提供服务。

本发明与现有技术相比较,具有如下优点:

第一,由于本发明在密钥生成中心生成群公钥和群私钥的过程中,采用了sm2密码算法中产生密钥的方法,加快了密钥的生成速度,克服了现有技术的问题,密钥生成中心基于rsa密码算法所产生的公钥位数至少为1024位,公钥位数太长导致密钥生成速度慢,签名的签发速度慢,从而跨域认证的速度慢的问题,使得本发明具有优点,密钥生成中心基于sm2密码算法计算出来的群公钥的位数相比于基于rsa密码算法所产生的公钥位数大大缩短,密钥生成速度快,从而使整个跨域认证的速度加快。

第二,由于本发明利用sm2密码算法,计算信任域da内发送请求的用户的标签的签名,克服了现有技术的问题,低位数的rsa密码算法所产生的的密钥已经可以被破解,在通信过程中系统参数、签名等信息被获取后,系统会受到重放攻击,所以采用rsa密码算法进行签名安全性低,跨域认证的安全性低,使得本发明具有优点sm2密码算法可以用较少的计算能力提供比rsa算法更高的安全强度,加入的时间戳标记了通信过程中发送系统参数、签名等信息的时间,可以使系统抵抗重放攻击,提高了整个跨越认证的安全性。

附图说明

图1为本发明的流程图。

具体实施方式

下面结合附图1,对本发明实现步骤做进一步的描述。

步骤1,生成群公钥和群私钥。

密钥生成中心随机选择一个元素c∈zq,其中,∈表示属于符号,zq表示q阶的整数串,q表示一个大素数。

密钥生成中心将元素c作为群私钥s并保存,将群私钥s和基点g的乘积作为群公钥,g表示椭圆曲线上阶数为n的基点,n表示一个大素数。

当q是奇素数时,要求q>2191;当q是2的方幂2m时,要求m>192且为素数,当q是奇素数时,素域中的元素用整数0,1,2,q-1表示;当q是2的方幂2m时,二元扩域阶为2的f2上的m维向量空间,其元素可用长度为m的比特串表示。

选取有限域fq的椭圆曲线方程为:

y2=x3+ax+b,

其中,椭圆曲线参数a、b∈fq,且(4a3+27b2)modq≠0,其中modq表示整数除以q的求余运算。

椭圆曲线上的基点g=(xg,yg),其中xg、yg分别为为基点的横纵坐标。

步骤2,签发标签。

标签公证中心在整数串zq中选择一个随机数m作为信任域da内发送请求的用户的私钥,将发送请求的用户的私钥与基点g的乘积作为信任域da内发送请求用户的公钥。

标签公证中心将信任域da内发送请求用户的私钥和公钥通过安全信道发送给用户。

标签公证中心使用群公钥为信任域da内发送请求用户签发标签。

所述的标签的信息包括版本号、序列号、公钥信息、签发日期、主体信息。

步骤3,计算杂凑值。

按照下式,计算信任域da内发送请求用户的临时私钥和临时公钥:

sku=h((sk×p)||t),pku=sku×g,

其中,sku表示信任域da内发送请求用户u的临时私钥,h(·)表示安全散列函数,sk表示信任域da内发送请求用户的私钥,p表示群公钥,‖表示级联关系符号,t表示时间戳,pku表示信任域da内发送请求用户u的临时公钥。

按照下式,计算信任域da内发送请求的用户身份信息的杂凑值:

zu=h256(idu||ωu||a||b||xg||yg||xu||yu),

其中,zu表示发送请求用户u在信任域da内的身份信息的杂凑值,h256(·)表示输出长度为256比特的杂凑函数,idu表示发送请求用户u在信任域da内的身份标识,ωu表示发送请求用户u在信任域da内的身份标识idu的长度值,xg、yg分别表示椭圆曲线上基点g的横纵坐标值,xu、yu分别表示信任域da内发送请求用户临时公钥的横纵坐标值。

按照下式,计算待签名标签的杂凑值:

e1=hv(l||zu),

其中,e1表示待签名标签的杂凑值,hv(·)表示密码杂凑函数,v表示带签名标签摘要长度,l表示标签信息。

步骤4,利用sm2密码算法,计算信任域da内发送请求的用户的标签的签名。

按照下式,计算用户的标签的签名中的第一部分标识:

r1=(e1+x1)modn

其中,r表示信任域da内发送请求的用户标签的签名中的第一部分标识,x1、y1分别表示椭圆曲线上任意点β的横坐标和纵坐标的值,β=(x1,y1)=[k]g,k表示一随机数,k∈[1,n-1],[]表示取整操作,mod表示求余操作。

按照下式,计算信任域da内发送请求用户的标签的签名中的第二部分标识:

ψ1=(1+sku)-1(k-r1×sku)modn,

其中,ψ1表示信任域da内发送请求的用户标签的签名中的第二部分标识。

将签名的第一部分标识与第二部分标识组合为信任域da内发送请求的用户标签的签名。

步骤5,验证信任域da内发送请求的用户标签的签名是否合法。

信任域da内发送请求用户将签发标签、用户身份、用户签名标签时的时间戳、用户标签的签名发送给标签公证中心。

标签公证中心从标签中获取信任域da内发送请求用户的公钥,按照下式,计算标签公证中心的临时私钥与临时公钥:

skidp=h((pk×s)||t),pkidp=skidp×g,

其中,skidp表示标签公证中心idp的临时私钥,pk表示信任域da内发送请求用户的公钥,pkidp表示标签公证中心idp的临时公钥。

按照步骤3和步骤4中相同的方法,得到标签公证中心对标签的签名。

将满足认证条件的信任域da内发送请求用户对标签的签名认定为合法签名,将信任域da内发送请求用户对标签的签名认定为不合法签名。

所述的认证条件是指,接收的用户标签的签名与与标签公证中心的签发签名相同,且用户标签是由标签公证中心签发的,标签尚在有效期内、格式正确。

步骤6,计算标签公证中心验证信任域da内发送请求用户标签的签名后标签的杂凑值。

按照下式,计算验证信任域da内发送请求用户标签的签名后标签公证中心的身份信息的杂凑值:

zidp=h256(ididp||ωidp||a||b||xg||yg||xidp||yidp),

其中,zidp表示验证信任域da内发送请求用户标签的签名后标签公证中心的身份信息的杂凑值,ididp表示标签公证中心idp的身份标识,ωidp表示标签公证中心idp的身份标识ididp的长度值,xidp、yidp分别表示群公钥的横纵坐标。

按照下式,计算验证信任域da内发送请求用户标签的签名后标签的杂凑值:

e2=hv(l||zidp||b),

其中,e2表示验证信任域da内发送请求用户标签的签名后标签的杂凑值,b表示一个因子,当用户标签的签名为合法签名时该因子取值为1,当用户标签的签名为不合法签名时该因子取值为0。

步骤7,利用sm2密码算法,计算标签公证中心验证信任域da内发送请求用户标签的签名后对标签的签名。

按照下式,计算标签公证中心验证信任域da内发送请求用户标签的签名后对标签的签名的第一部分标识:

r2=(e2+x1)modn

其中,r2表示标签公证中心验证用户标签的签名后对标签的签名的第一部分标识。

按照下式,计算标签公证中心验证信任域da内发送请求用户标签的签名后对标签的签名的第二部分标识:

ψ2=(1+s)-1(k-r2×s)modn,

其中,ψ2表示标签公证中心验证用户标签的签名后对标签的签名的第二部分标识。

将签名的第一部分标识与第二部分标识组合为标签公证中心验证用户标签的签名后对标签的签名。

步骤8,验证标签公证中心验证信任域da内发送请求用户标签的签名后对标签的签名。

标签公证中心将信任域da内发送请求用户标签、标签公证中心身份、因子b、标签公证中心验证用户标签的签名后对标签的签名发送给另一信任域dc内提供服务的服务端。

信任域dc内的服务端按照与步骤6相同的计算方法,得到标签公证中心验证用户标签的签名后标签的杂凑值e3。

按照下式,计算椭圆曲线上验证点的坐标:

(x2,y2)=[ψ2]g+[(ψ2+r2)modn]p,

其中,(x2,y2)表示椭圆曲线上的验证点的坐标。

信任域dc内的服务端判断签名是否满足合法条件,若是,则执行下一步,否则,执行步骤10。

所述的合法条件是指同时满足r2∈[1,n-1],r2=(e3+x2)modn,ψ2∈[1,n-1]三个公式成立的情形,其中,r2表示标签公证中心验证用户标签的签名后对标签的签名的第一部分标识,∈表示属于符号,n表示基点g的阶数,e3表示标签公证中心验证用户标签的签名后标签的杂凑值,x2表示椭圆曲线上的验证点的横坐标的值,mod表示求余操作,ψ2表示标签公证中心验证用户标签的签名后对标签的签名的第二部分标识。

判断因子b的值是否为1,若是,执行步骤9,否则,执行步骤10。

步骤9,服务端开启服务。

步骤10,服务端拒绝提供服务。

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