一种基于区块链的数字身份认证方案
0 摘要
身份认证是一种用户与服务商相互的需求。
用户对服务商的身份认证很好办,比如超文本传输协议和公钥基础设施实现
难就难在服务商对用户的身份认证
本文采用一种基于新的拜占庭容错算法的联盟链为底层,设计一个去中心化的互联网数字身份认证系统。用户只需一次注册数字身份,就可实现系统全体服务器的认证。
很神奇的地方是,即使是用户的数字身份认证公开也不会影响其安全性和隐私性。而且这俩的认证都不会受到第三方认证机构的阻碍。
本文自主设计了用户数字身份标识DID,且灵活运用异步拜占庭容错算法,最终实现了基于联盟链的去中心化用户身份认证系统。
1 概要介绍
现有对服务器的认证:超文本传输安全协议HTTPS
- 建立中心化的公钥基础设施PKI,对服务器身份进行认证
- 混合加密机制,保证数据端到端的安全传输
但是对客户端的设备验证是无法验证用户的身份,国内外主要采用三种方式验证客户端身份:
企业化,联盟式,用户中心化
。
1.1 企业化
角色:客户端,服务器,数据库
采用账号-口令方式,其中涉及到哈希值,盐值,session值,cookie值
优点:
- 注册、校验都只需一次 HTTPS 连接下的消息往返
- 运算量少:注册、校验都只需要一次哈希计算
缺点:
- 安全问题:服务器有安全风险
- 整体成本高
- 通用性问题:服务商之间数据不互通
- 隐私性问题:不诚实的服务商可以不经过用户的授权
- 数据冗余问题:服务商保存了用户的身份 认证信息,增加了存储和安全成本
- 控制问题:用户无法完全控制自己的账号,都是由服务器掌握
1.2 联盟式
角色:客户端,多个服务网站,一个认证服务器
采用账号-口令方式,其中涉及到哈希值,盐值,session值,cookie值
只要系统内一个网站注册和登录成功,其他网站可用同一套账号-口令实现登录
优点:
- 通用性更强
- 数据冗余少
- 易用性更好
缺点:
- 具有一个中心化的认证节点
- 隐私问题:认证节点
- 可用性 问题:存在“单点故障”问题
- 安全问题:中心节点数据的安全性依赖于节点 安全措施
- 中心权力滥用问题:认证中心可以随时停止对某些用户的认证服务
1.3 用户中心化
角色:资源拥有者(用户),第三方应用,认证平台(支付宝,微信),资源服务器(开通权限)。
优点:
- 通用性更好,自主选择注册一个 平台身份来登录多个第三方服务
- 安全性得到了提高
缺点:
- 认证中心的可用性
- 最大问题:中心权力滥用问题
- 不同的认证服务平台之间数据不互通
- 不诚实的认证服务商可以不经过用户的授权
1.4 本文创新点
采用密码学,计算机网络,异步拜占庭容错算法等技术
- 设计了一种新的数字身份标识 DID 以及一种新的异步拜占庭容错算法 dsBFT
- 基于 DID 和 dsBFT,设计联盟式区块链
- 以区块链为底层,设计一个去中心化身份认证系统
采用RSA或者ECC易受到粉尘攻击和量子计算的破解,基于格的非对称密钥算法未广泛使用。
针对这个问题,椭圆曲线数字签名算法(ECDSA)与其它密码学方法相结合
DID节点众多,也就会存在恶意节点,所以采取共识算法,在恶意节点的情况下,依然能保证信息的正确判断。
2 方案基础知识介绍
2.1 密码学工具与算法
2.1.1 随机数
2.1.2 哈希函数
本文主要使用的 SHA-256 哈希函数属于安全散列算法。该算法能计算出一个数字消息所对应到的, 长度固定为 256 比特的字符串(又称消息摘要)。且若输入的消息不同,它们对应到不同字符串的机率会很高。
2.1.3 椭圆曲线数字签名算法
本文使用的椭圆曲线数字签名算法是一种被广泛应用于数字签名的加密算法,属于椭圆曲线密码学体系,其构造依赖于解决椭圆曲线离散对数问题的困难性。
ECC 的主要优势是在某些情况下与其他方法相比,如 RSA 加密算法,其能够使用更短的密钥提供相当的或更高等级的安全。
2.1.4 量子攻击
量子计算是使用量子叠加
和量子纠缠
的量子力学现象来执行的一种计算方式,量子计算机可以实现这种计算。目前量子计算中成型的算法主要有:Shor 算法和 Grover 算法两种。
- Shor 的算法可以使基于大素数