一种基于标识密码和联盟链的双代理跨域认证方法与流程

文档序号:18465594发布日期:2019-08-17 02:25阅读:330来源:国知局
一种基于标识密码和联盟链的双代理跨域认证方法与流程

本发明涉及一种基于标识密码和联盟链的双代理跨域认证方法,用于在实体请求跨域实体服务或者访问跨域实体资源前的身份确认,属于物联网信息安全技术领域。



背景技术:

身份认证在物联网场景中是一种非常基础性的技术,通常作为隐私、安全、信任、授权、访问控制等的底层技术,或作为大多数应用的子模块而存在。实体在请求服务、访问网络资源之前,通常需要由相关的身份认证模块进行身份认证,身份确认通过之后才能进入下一步的网络行为。

从身份认证过程中所使用的密钥类型来看,身份认证技术分为两大类:基于对称密钥的身份认证技术和基于公钥的身份认证技术。基于对称密钥的身份认证技术所涉及的计算简单,通常具有较好的性能,但是通常有一个预密钥分配的环节,这使得系统的可扩展性和灵活性收到很大的限制。目前主要被使用的基于公钥的身份认证技术,又进一步分为基于数字证书的身份认证技术和基于身份标识密码技术的身份认证技术。基于公钥的身份认证技术可解决对称密钥所面临的的扩展性和灵活性问题,但是基于数字证书的身份认证技术存在对公钥基础设施的依赖以及数字证书的维护问题,这使得其在物联网领域的应用受到限制。本发明使用基于标识密码的身份认证技术,标识密码不需要使用数字证书将实体的标识和公钥进行绑定,实体标识本身就是公钥或者根据标识计算导出,具有管理简单,扩展性好、灵活性高的特点。

联盟链是一种需要注册许可的区块链,区块链账本仅限于联盟链成员参与维护,区块链上的读写权限、参与记账权限按联盟规则来制定。联盟链平台应提供成员管理、认证、授权、监控、审计等安全管理功能。联盟链虽然去中心化程度不如公有链,但其在交易的确认时间、每秒交易数方面都有很大提升,安全性和性能比公有链高。



技术实现要素:

本发明考虑物联网场景下不同管理域间实体的认证需求,针对所述不同管理域间缺乏互信以及公钥基础设施面临证书维护的问题,结合标识密码技术无数字证书、易于部署和管理的优势,联盟链构建互信以及去中心化特性,提出了一种基于标识密码和联盟链的双代理跨域认证方法。

所述基于标识密码和联盟链的双代理跨域认证方法涉及的名词有:

1)管理域,是指某些设备同属于一个机构或组织,逻辑上被所述机构或组织内的管理服务器所管理,所述设备及设备的管理服务器共同构成了一个独立的逻辑域;

2)实体,即entity,简称e,对应着物联网场景下的一个物理设备,ea表示属于管理域a内的实体;

3)密钥生成中心服务器,即keygenerationcenter,简称kgc,是管理域内的密钥管理服务器,kgca表示管理域a中的密钥生成中心服务器;

4)认证代理服务器,即authenticationagentserver,简称aas,是管理域内实体的认证代理,aasa表示属于管理域a中的认证代理服务器;

5)区块链代理服务器,即blockchainagentserver,简称bcas,是管理域内kgc服务器的区块链代理,bcasa表示属于管理域a中的区块链代理服务器;

6)实体标识,用于唯一标识一个实体,且用来作为实体的公钥或者由标识计算出其公钥;

其中,实体标识由不可变字段和可变字段两个字段构成;

不可变字段由实体名称、管理域标识两个字段,可变字段由共同参考时间构成,例如utc参考时间;

可变字段的时间根据标识策略决定,标识策略决定实体标识的有效时长,以此来实现实体密钥的撤销和更新;

所述基于标识密码和联盟链的双代理跨域认证方法,包含如下步骤:

步骤1,管理域系统初始化,依次包含以下步骤:

步骤1.1,kgc服务器初始化系统参数组;

步骤1.2,kgc服务器生成系统主密钥;

其中,系统主密钥以成对形式出现,包含系统主公钥和系统主私钥;

步骤1.3,kgc服务器给bcas服务器发送信息上链请求,并附上管理域标识符、系统参数组和系统主公钥;

步骤1.4,bcas服务器将管理域标识符、系统参数组和系统主公钥存入文件,并计算文件哈希;通过调用信息上链智能合约,将文件的uri和哈希信息写入区块链;其中,uri表示uniformresourceidentifier,即统一资源标识符,用于唯一标识网络上的资源,并能通过uri在网络中找到该资源。

步骤2,管理域b内实体eb认证管理域a内实体ea的过程,依次包含以下步骤:

步骤2.1,管理域a内,实体ea验证签名私钥是否存在且仍旧有效,若存在且有效,则进入步骤2.8;若实体ea目前尚无签名私钥或者签名私钥已经失效,则进入步骤2.2;

步骤2.2,管理域a内,实体ea向kgca服务器请求生成自己的签名私钥,并附上自己的标识;

步骤2.3,管理域a内,kgca服务器根据实体ea传来的标识和系统的系统主私钥,计算出实体ea的签名私钥;

步骤2.4,管理域a内,kgca服务器向bcasa服务器请求更新管理域a的系统信息,并附上实体ea的标识;

步骤2.5,管理域a内,bcasa服务器更新管理域a的系统信息对应的文件内容,即更换或者增加实体标识ea,并重新计算文件哈希值,调用信息上链智能合约,往联盟链中写入新的uri和文件哈希值信息;

步骤2.6,管理域a内,bcasa服务器更新管理域a的系统信息后,给kgca服务器返回系统信息更新成功消息;

步骤2.7,管理域a内,kgca服务器将ea的签名私钥以安全的方式发送给实体ea;

步骤2.8,管理域a内,实体ea生成消息m;

步骤2.9,管理域a内,实体ea向aasa服务器发送签名请求和认证请求,并附上消息m;

步骤2.10,管理域a内,aasa服务器首先查询自己数据库内是否含有实体ea的签名私钥,并验证其有效性;若实体ea的签名私钥有效,则进入步骤2.14;若无或实体ea的签名私钥已经失效,则进入步骤2.11;

步骤2.11,管理域a内,aasa服务器向kgca服务器请求实体ea的签名私钥;

步骤2.12,管理域a内,kgca服务器根据aasa服务器的签名私钥请求,从数据库查找实体ea的签名私钥;

步骤2.13,管理域a内,kgca服务器给aasa服务器回传实体ea的签名私钥;

步骤2.14,管理域a内,aasa服务器使用实体ea的签名私钥对其发来的消息m进行签名,产生数字签名s;

步骤2.15,管理域a内,aasa服务器将从实体ea发来的认证请求转发给管理域b内的aasb服务器,并附上消息m和签名s;

步骤2.16,管理域b内,aasb服务器接收到认证请求、消息m和签名s之后,先在自己的数据库内的查询管理域a中是否包含实体ea的标识;若存在且仍有效,进入步骤2.21;若不存在或者无效,则进入步骤2.17;

步骤2.17,管理域b内,aasb服务器向bcasb服务器请求关于管理域a的最新系统信息;

步骤2.18,管理域b内,bcasb服务器收到aasb服务器的请求之后,调用信息查询智能合约,查询管理域a的最新系统信息纪录;根据返回纪录中的uri字段获取管理域a的最新系统信息;

步骤2.19,管理域b内,bcasb服务器将管理域a的最新系统信息回传给aasb服务器;

步骤2.20,管理域b内,aasb服务器再次查询管理域a中是否包含实体ea;若无实体ea,认证失败,则进入步骤2.22;若存在实体ea,则进入步骤2.21;

步骤2.21,管理域b内,aasb服务器根据消息m、签名s和管理域a的系统信息,开展签名验证;若签名验证成功,则认证成功;若签名验证失败,则认证失败;

步骤2.22,管理域b内,aasb服务器生成认证结果;若认证成功,则认证结果为认证成功消息,进入步骤2.24;若认证失败,则生成认证结果为认证失败消息,进入步骤2.23;

步骤2.23,管理域b内,aasb服务器给管理域a内的aasa服务器回传认证结果,进入步骤2.25;

步骤2.24,管理域b内,aasb服务器给管理域a内的aasa服务器回传认证结果;此外,aasb服务器给实体eb发送认证结果;

步骤2.25,管理域a内,aasa服务器接收到认证结果后,将其转发给实体ea。

有益效果

本发明一种基于标识密码和联盟链的双代理跨域认证方法,与现有认证方法相比,具有如下有益效果:

1、使用标识密码技术实现实体身份认证过程,认证过程不依赖于公钥基础设施且不需要数字证书,使得系统的部署、维护简便,易于扩展,灵活性高;

2、利用联盟链构建信任、去中性化特性,解决不同管理域之间缺乏互信的难题,使得不同域间的互信构建过程并不依赖于第三方机构;

3、实体标识部分的设计,有效解决标识密码技术公钥的撤销和更新问题。

附图说明

图1是本发明一种基于标识密码和联盟链的双代理跨域认证方法的交互流程图。

具体实施方式

下面结合附图及实施例对本发明所述的一种基于标识密码和联盟链的双代理跨域认证方法进行详细阐述。

实施例1

本实施例阐述了所述基于标识密码和联盟链的双代理认证方法的交互流程。

所述基于标识密码和联盟链的双代理认证方法可应用于物联网跨域应用场景。此实施例以智能制造工厂应用场景为例,为了简化描述,以两个智能制造工厂为例。有两个智能制造工厂:智能制造工厂a和智能制造工厂b,它们的管理是相互独立的,但具有商业合作关系。每个智能制造工厂中部署若干个智能制造设备,具有感知、存储、处理、执行能力,等同于一个物联网设备。这些智能制造设备由一个中央管理服务器控制。两个智能制造工厂的智能制造设备在生产某些产品的过程中需要通信协作,协作之前需要进行跨域的相互认证。所述基于标识密码和联盟链的双代理跨域认证方法所用的标识密码技术为sm9签名技术,联盟链为hyperledgerfabric。

本发明中,实体标识由不可变字段和可变字段两个字段构成。不可变字段由实体名称、管理域标识两个字段,可变字段由共同参考时间构成,例如utc参考时间。可变字段的时间根据标识策略决定,标识策略决定实体标识的有效时长,以此来实现实体密钥的撤销和更新。

具体实施时,某实体标识实体名称字段为“entitya”,管理域标识字段为“domaina”,时间字段为“20190530123030”,其含义为实体标识为“entityadomaina20190530123030”,其有效时间值至2019年05月12时30分30秒。

所述基于标识表示密码和联盟链的双代理认证方法具体实施时,步骤1,即管理域内的初始化工作,包括以下步骤:

步骤a,确定管理域内的系统参数组,内容包括:曲线识别符cid;椭圆曲线基域fq的参数q;椭圆曲线方程参数a和b;在cid的低4位为2的情况下的扭曲线参数β;曲线阶的素因子n和相对于n的余因子cf;曲线e(fq)相对于n的嵌入次数k;的n阶循环子群g1的生成元p1,d1整除k;的n阶循环子群g2的生成元p2,d2整除k;双线性对e的标识符eid,双线性对e:g1×g2→gt,gt的阶为n;可选地,g2到g1的同态映射ψ。

步骤b,系统主密钥的生成。kgc服务器产生随机数ks∈[1,n-1]作为系统主私钥,计算g2中的元素ppub-s=[ks]p2作为系统主公钥,则系统的主密钥对为(ks,ppub-s)。

步骤c,kgc服务器给bcas服务器发送信息上链请求,并附上管理域标识符、系统参数组和系统主公钥;

步骤d,bcas服务器将管理域标识符、系统参数组和系统主公钥存入文件,并计算文件哈希;通过调用信息上链智能合约,将文件的uri和哈希信息写入区块链;其中,uri表示uniformresourceidentifier,即统一资源标识符,用于唯一标识网络上的资源,并能通过uri在网络中找到该资源。

管理域内的实体首先必须先在密钥生成中心注册,成为该管理域合法、有效的一个实体。

步骤2,即:管理域b内实体eb认证管理域a内实体ea的过程如图1所示,依次包含以下步骤:

步骤1),管理域a内,实体ea验证签名私钥是否存在且仍旧有效,若存在且有效,则进入步骤8);若实体ea目前尚无签名私钥或者签名私钥已经失效,则进入步骤2);

步骤2),管理域a内,实体ea向kgca服务器请求生成自己的签名私钥,并附上自己的标识;

步骤3),管理域a内,kgca服务器根据实体ea传来的标识和系统的系统主私钥,计算出实体ea的签名私钥;

步骤4),管理域a内,kgca服务器向bcasa服务器请求更新管理域a的系统信息,并附上实体ea的标识;

其中,系统信息包含:管理域的标识符、系统参数组、系统主公钥以及管理域内所有实体的标识;此处,仅需更新实体标识;

步骤5),管理域a内,bcasa服务器更新管理域a的系统信息对应的文件内容,即更换或者增加实体标识ea,并重新计算文件哈希值,调用信息上链智能合约,往联盟链中写入新的uri和文件哈希值信息;

步骤6),管理域a内,bcasa服务器更新管理域a的系统信息后,给kgca服务器返回系统信息更新成功消息;

步骤7),管理域a内,kgca服务器将ea的签名私钥以安全的方式发送给实体ea;

步骤8),管理域a内,实体ea生成消息m;

步骤9),管理域a内,实体ea向aasa服务器发送签名请求和认证请求,并附上消息m;

步骤10),管理域a内,aasa服务器首先查询自己数据库内是否含有实体ea的签名私钥,并验证其有效性;若实体ea的签名私钥有效,则进入步骤14);若无或实体ea的签名私钥已经失效,则进入步骤11);

步骤11),管理域a内,aasa服务器向kgca服务器请求实体ea的签名私钥;

步骤12),管理域a内,kgca服务器根据aasa服务器的签名私钥请求,从数据库查找实体ea的签名私钥;

步骤13),管理域a内,kgca服务器给aasa服务器回传实体ea的签名私钥;

步骤14),管理域a内,aasa服务器使用实体ea的签名私钥对其发来的消息m进行签名,产生数字签名(h,s);数字签名依次包含如下步骤:

步骤14.1),计算群gt中的元素g=e(p1,ppub-s);

步骤14.2),产生随机数r∈[1,n-1];

步骤14.3),计算群gt中的元素w=gr,将w的数据类型转换为比特串;

步骤14.4),计算整数h=h2(m||w,n);

步骤14.5),计算整数l=(r-h)modn,若l=0则重新进入步骤14.2);

步骤14.6),计算群g1中的元素

步骤14.7),消息m的签名为(h,s)。

步骤15),管理域a内,aasa服务器将从实体ea发来的认证请求转发给管理域b内的aasb服务器,并附上消息m和签名(h,s);

步骤16),管理域b内,aasb服务器接收到认证请求、消息m和签名(h,s)之后,先在自己的数据库内的查询管理域a中是否包含实体ea的标识;若存在且仍有效,进入步骤21);若不存在或者无效,则进入步骤17);

步骤17),管理域b内,aasb服务器向bcasb服务器请求关于管理域a的最新系统信息;

步骤18),管理域b内,bcasb服务器收到aasb服务器的请求之后,调用信息查询智能合约,查询管理域a的最新系统信息纪录;根据返回纪录中的uri字段获取管理域a的最新系统信息;

步骤19),管理域b内,bcasb服务器将管理域a的最新系统信息回传给aasb服务器;

步骤20),管理域b内,aasb服务器再次查询管理域a中是否包含实体ea;若无实体ea,认证失败,则进入步骤22);若存在实体ea,则进入步骤21);

步骤21),管理域b内,aasb服务器根据消息m、签名(h,s)和管理域a的系统信息,开展签名验证;若签名验证成功,则认证成功;若签名验证失败,则认证失败;签名验证依次包含以下步骤:

步骤21.1),检验h∈[1,n-1]是否成立,若不成立,验证失败;

步骤21.2),将s的数据类型转换为椭圆曲线上的点,检验s∈g1是否成立,若不成立,则验证失败;

步骤21.3),计算群gt中的元素g=e(p1,ppub-s);

步骤21.4),计算群gt中的元素t=gh

步骤21.5),计算整数

步骤21.6),计算群g2中的元素p=[h1]p2+ppub-s;

步骤21.7),计算群gt中的元素u=e(s,p);

步骤21.8),计算群gt中的元素w=u·t,将w的数据类型转换为比特串;

步骤21.9),计算整数h2=h2(m||w,n),检验h2=h是否成立,若成立则验证成功;否则验证失败;

步骤22),管理域b内,aasb服务器生成认证结果;若认证成功,则认证结果为认证成功消息,进入步骤24);若认证失败,则生成认证结果为认证失败消息,进入步骤23);

步骤23),管理域b内,aasb服务器给管理域a内的aasa服务器回传认证结果,进入步骤25);

步骤24),管理域b内,aasb服务器给管理域a内的aasa服务器回传认证结果;此外,aasb服务器给实体eb发送认证结果;

步骤25),管理域a内,aasa服务器接收到认证结果后,将其转发给实体ea。

以上所述结合附图和实施例描述了本发明的实施方式,但是对于本领域技术人员来说,在不脱离本专利原理的前提下,还能够做出若干改进,这些也是为属于本专利的保护范围。

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