一种基于区块链的身份认证方法及其系统技术方案

技术编号:21438396 阅读:32 留言:0更新日期:2019-06-22 13:54
本发明专利技术涉及基于区块链的身份认证方法及其系统。本发明专利技术的基于区块链的身份认证方法,包括以下步骤,区块链智能合约接收服务端发送的身份认证请求,身份认证请求包括用户公钥及E(f(x))、E(g(x)),E(f(x))和E(g(x))由客户端根据预设同态加密算法E计算获得;智能合约根据用户公钥查询用户在区块链上的认证凭证Ea,并根据E(f(x))、E(g(x))、以及同态加密算法E的同态属性进行计算验证,若满足同态属性,则身份认证通过;智能合约将身份认证结果返回服务端。其有益效果是:基于区块链本身的特性,能抵御重放攻击和暴力破解的威胁,导致攻击成本增大。利用同态加密属性等式,可以构建nizk,在不泄露用户身份认证的原始凭据的条件下,证明用户拥有其凭据,从而证明其身份。

【技术实现步骤摘要】
一种基于区块链的身份认证方法及其系统
本专利技术涉及信息安全领域,特别涉及一种基于区块链的身份认证方法及其系统,可以应用在需要进行统一身份认证的应用场景中。
技术介绍
随着互联网技术的快速发展,电子身份认证的业务越来越多,为了解决用户在一个地方输入口令,能安全的在多个业务里进行快捷的统一身份认证,成为一种趋势。目前的统一认证都是依赖集中的认证服务器,既可能存在单点故障,也由于集中式的权利控制在某一家服务端手里,让多个不同组织在使用统一认证方法时存在安全隐患。因此,提供一种安全性好、认证快捷的基于区块链的身份认证方法及其系统,是本专利技术的创研动机。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提供一种安全性好、认证快捷的基于区块链的身份认证方法及其系统。应用区块链的分布式、去中心化的方案可以解决现有的统一认证技术安全性差的问题。本专利技术提供的一种基于区块链的身份认证方法,其技术方案为:一种基于区块链的身份认证方法,包括如下步骤:区块链智能合约接收服务端发送的身份认证请求,所述身份认证请求包括用户公钥及E(f(x))、E(g(x)),所述E(f(x))和E(g(x))由客户端根据预设同态加密算法E计算获得,其中,f(x)=H1(x),g(x)=H2(x),其中函数H1与H2是两个不同的单向散列函数,且H1与H2的输出位数相同;所述智能合约根据用户公钥查询用户在区块链上的认证凭证Ea,并根据E(f(x))、E(g(x))、以及同态加密算法E的同态属性进行计算验证,若满足同态属性,则身份认证通过;所述智能合约将身份认证结果返回所述服务端。优选地,所述同态加密算法E为加法同态加密算法,所述认证凭证Ea为E(f(x)+g(x));所述智能合约根据E(f(x))、E(g(x))、以及同态加密算法E的同态属性进行验证,包括:所述智能合约根据E(f(x))、E(g(x))计算E(f(x))*E(g(x)),并与所述认证凭证Ea进行比对,比对一致,则身份认证通过。优选地,所述E(f(x))和E(g(x))由所述服务端采用所述智能合约的公钥进行加密获得密文,并发送到所述智能合约;所述智能合约采用其私钥对所述密文解密获得E(f(x))和E(g(x))明文。优选地,还包括区块链注册步骤,所述区块链注册步骤包括:1)、所述智能合约接收客户端发送的注册请求,所述注册请求包括用户公钥及预设密码x,所述预设密码x采用所述智能合约的公钥加密发送所述智能合约;2)、所述智能合约采用其私钥对接收到的加密的预设密码x进行解密,获得预设密码x明文;3)、所述智能合约根据预设密码x及所述预设同态加密算法E计算所述认证凭证Ea,并采用智能合约公钥对所述认证凭证Ea进行加密,加密后的认证凭证Ea与用户公钥一并存储在区块链上。优选地,所述区块链注册步骤还包括步骤4):4)、所述智能合约为所述用户生成区块链身份标识eid,并与所述用户公钥一并存储于区块链上。优选地,所述智能合约的公私钥对的生成方法为:所述智能合约的私钥由区块链上的服务端采用预设的密钥协商算法协商得出;所述智能合约的公钥由其私钥根据预设椭圆曲线算法计算得出。优选地,所述智能合约根据用户请求变更其预设密码x,包括以下步骤:所述智能合约接收客户端提交的变更密码请求,所述变更密码请求包括原始预设密码x与新密码;所述智能合约根据原始预设密码x及所述预设的同态加密算法E生成认证凭证,并与区块链上存储的所述用户的认证凭证Ea进行比对,比对一致则验证通过;所述智能合约根据变更密码请求将原始预设密码x变更为新密码。本专利技术还提供了一种基于区块链的身份认证方法,用于服务端,包括如下步骤:服务端接收客户端发送的服务请求,所述服务请求包括用户公钥及E(f(x))、E(g(x)),所述E(f(x))和E(g(x))由客户端根据预设同态加密算法E计算获得,其中,f(x)=H1(x),g(x)=H2(x),其中函数H1与H2是两个不同的单向散列函数,且H1与H2的输出位数相同;服务端发送身份认证请求至区块链的智能合约,所述身份认证请求包括所述用户公钥及E(f(x))、E(g(x));服务端根据所述智能合约返回的身份认证结果响应所述服务请求。优选地,所述身份认证结果由所述智能合约根据接收到的E(f(x))、E(g(x))及预设的同态加密算法E的同态属性进行计算验证获得;若满足同态属性,则身份认证结果为通过身份认证;若不满足同态属性,则身份认证结果为未通过身份认证。优选地,所述服务端根据所述智能合约返回的身份认证结果响应客户端请求,包括:若所述智能合约返回的身份认证结果为通过身份认证,则根据用户公钥在区块链上查找用户的区块链身份标识eid,并根据用户的区块链身份标识eid查询其在所述服务端的服务身份标识uid;根据所述服务身份标识uid响应所述服务请求并反馈客户端;若所述智能合约返回的身份认证结果为未通过身份认证,则返回客户端错误提示。优选地,所述用户的区块链身份标识eid与所述用户的服务身份标识uid在所述用户首次向所述服务端请求服务时进行绑定。本专利技术还提供了一种基于区块链的身份认证方法,用于服务端,包括如下步骤:服务端接收客户端发送的服务请求,所述服务请求包括用户公钥及E(f(x))、E(g(x)),所述E(f(x))和E(g(x))由客户端根据预设同态加密算法E计算获得,其中,f(x)=H1(x),g(x)=H2(x),其中函数H1与H2是两个不同的单向散列函数,且H1与H2的输出位数相同;服务端发送认证凭证获取请求至区块链的智能合约,所述认证凭证获取请求包括所述用户公钥;服务端接收所述智能合约返回的所述用户的认证凭证Ea,并根据E(f(x))、E(g(x))、以及所述同态加密算法E的同态属性进行计算验证,若满足同态属性,则身份认证通过;服务端根据身份认证结果响应所述服务请求。本专利技术还提供了一种基于区块链的身份认证系统,包括客户端、服务端、区块链,所述区块链采用上述的身份认证方法进行统一身份认证。本专利技术的实施包括以下技术效果:1)、使用本专利技术的身份认证方法,只在链上公开区块链身份标识eid,用户在各区块链服务端的内部真实服务身份标识uid永不泄露,很好的保障服务端内部账户体系不动,且隐私不易泄露。2)、身份认证过程的验证和计算过程分别在客户端本地、区块链、各服务端的认证服务器进行,运算更快,权责清晰,减少用户密码泄露的可能。3)、对用户密码进行无存储的保护,泄露公开认证凭证Ea不会导致用户认证被破解,具有更高的安全性。4)、客户端本地、区块链、各服务端之间交互极少,计算一次即可验证,兼具安全性的同时,还提高了计算效率,节省用户身份认证的时间。利用同态属性等式,可以构建nizk(non-interactivezeroknowledge(非交互的零知识证明)),在不泄露用户身份认证的原始凭据(如用户密码、指纹)的条件下,证明用户拥有其凭据,从而证明其身份。附图说明图1为本专利技术实施例一的基于区块链的身份认证方法流程示意图。图2为自注册步骤流程示意图。图3为本专利技术实施例二的基于区块链的身份认证方法流程示意图。具体实施方式下面将结合实施例以及附图对本专利技术加以详细说明,需要指出的是,所描述的实施例仅旨在便于对本专利技术的理解本文档来自技高网...

【技术保护点】
1.一种基于区块链的身份认证方法,其特征在于,包括如下步骤:区块链智能合约接收服务端发送的身份认证请求,所述身份认证请求包括用户公钥及E(f(x))、E(g(x)),所述E(f(x))和E(g(x))由客户端根据预设同态加密算法E计算获得,其中,f(x)=H1(x),g(x)=H2(x),其中函数H1与H2是两个不同的单向散列函数,且H1与H2的输出位数相同;所述智能合约根据用户公钥查询用户在区块链上的认证凭证Ea,并根据E(f(x))、E(g(x))、以及同态加密算法E的同态属性进行计算验证,若满足同态属性,则身份认证通过;所述智能合约将身份认证结果返回所述服务端。

【技术特征摘要】
1.一种基于区块链的身份认证方法,其特征在于,包括如下步骤:区块链智能合约接收服务端发送的身份认证请求,所述身份认证请求包括用户公钥及E(f(x))、E(g(x)),所述E(f(x))和E(g(x))由客户端根据预设同态加密算法E计算获得,其中,f(x)=H1(x),g(x)=H2(x),其中函数H1与H2是两个不同的单向散列函数,且H1与H2的输出位数相同;所述智能合约根据用户公钥查询用户在区块链上的认证凭证Ea,并根据E(f(x))、E(g(x))、以及同态加密算法E的同态属性进行计算验证,若满足同态属性,则身份认证通过;所述智能合约将身份认证结果返回所述服务端。2.根据权利要求1所述的一种基于区块链的身份认证方法,其特征在于,所述同态加密算法E为加法同态加密算法,所述认证凭证Ea为E(f(x)+g(x));所述智能合约根据E(f(x))、E(g(x))、以及同态加密算法E的同态属性进行验证,包括:所述智能合约根据E(f(x))、E(g(x))计算E(f(x))*E(g(x)),并与所述认证凭证Ea进行比对,比对一致,则身份认证通过。3.根据权利要求1所述的一种基于区块链的身份认证方法,其特征在于,所述E(f(x))和E(g(x))由所述服务端采用所述智能合约的公钥进行加密获得密文,并发送到所述智能合约;所述智能合约采用其私钥对所述密文解密获得E(f(x))和E(g(x))明文。4.根据权利要求1所述的一种基于区块链的身份认证方法,其特征在于,还包括区块链注册步骤,所述区块链注册步骤包括:1)、所述智能合约接收客户端发送的注册请求,所述注册请求包括用户公钥及预设密码x,所述预设密码x采用所述智能合约的公钥加密发送所述智能合约;2)、所述智能合约采用其私钥对接收到的加密的预设密码x进行解密,获得预设密码x明文;3)、所述智能合约根据预设密码x及所述预设同态加密算法E计算所述认证凭证Ea,并采用智能合约公钥对所述认证凭证Ea进行加密,加密后的认证凭证Ea与用户公钥一并存储在区块链上。5.根据权利要求4所述的一种基于区块链的身份认证方法,其特征在于,所述区块链注册步骤还包括步骤4):4)、所述智能合约为所述用户生成区块链身份标识eid,并与所述用户公钥一并存储于区块链上。6.根据权利要求4所述的一种基于区块链的身份认证方法,其特征在于,所述智能合约的公私钥对的生成方法为:所述智能合约的私钥由区块链上的服务端采用预设的密钥协商算法协商得出;所述智能合约的公钥由其私钥根据预设椭圆曲线算法计算得出。7.根据权利要求1所述的一种基于区块链的身份认证方法,其特征在于,所述智能合约根据用户请求变更其预设密码x,包括以下步骤:所述智能合约接收客户端提交的变更密码请求,所述变更密码请求包括原始预设密码x与新密码;所述智能合约根据原始预设密码x及所述...

【专利技术属性】
技术研发人员:程威李静唐肖旅
申请(专利权)人:北京思源互联科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1