本发明专利技术属于区块链技术领域,具体为一种基于智能合约非同质化代币的去中心化匿名身份认证方法。本发明专利技术方法包括:用户在链上创建自己在某个互联网服务供应商的账号的数字账户,这个数字账户背后的数字身份仅由用户所有;当用户某个数字身份登录时,会在链上创建一个有时间限制的“会话”,在这段时间内,可以以这个数字身份登录它下属的所有数字账户。本发明专利技术方法充分兼容了现有互联网服务供应商的用户系统和认证机制,将数字账户以非同质化代币的形式保存在区块链上,通过零知识的手段隐藏了用户账户的真实信息;将单点登录(SSO)中的认证方由可信的第三方替换为区块链上的智能合约,实现了类似SSO的“一次认证,处处登录”机制。
【技术实现步骤摘要】
本专利技术属于区块链,具体涉及一种基于智能合约非同质化代币的去中心化匿名身份认证方法。
技术介绍
1、对于一个面向用户的系统来说,用户的身份管理总是占据核心地位。传统的互联网服务供应商都会先要求用户注册一个账户,随后才对此账户开放服务权限,服务的对象为账户而非真正使用该服务的人。出于安全考虑,这些平台在注册账号时都会对密码提出要求,如至少有12个字符长,使用字母、数字、特殊字符的组合,而且建议用户不应该在另一个账户中重复使用密码。既给用户带来了记忆上的负担和繁琐的登录过程,又带来了不容小觑的安全隐患。
2、为此,类似saml(security assertion markup language)的这种单点登录(single sign-on,sso)协议被业界广泛采用,例如华为云,google cloud,microsoftazure都对外开放了基于saml协议sso接口。除此之外还有oauth、openid connect等sso授权协议,例如有些应用可以用微信或github账号登录。这类身份模型称为联邦身份,联邦身份要求存在一个中心化的机构用于身份注册和身份认证,这个机构称为身份提供商(identity provider,idp)。用户只需在idp认证后便可登录至其它应用,这种单点登录的机制提升了用户的体验,但也带来了一些风险。首先用户的身份数据全权交由idp管理,因此idp有能力跟踪用户行为、拒绝访问甚至恶意访问其它服务;此外一些大规模的用户数据泄露事故也使得人们对于把个人数据托管在第三方机构的安全性感到担忧。</p>3、人们积极探索各种方法,以减少中央机构对用户数据的所有权,近年来飞速发展的区块链技术为去中心化身份(decentralized identity,did)提供了一种技术基础。did主张用户的存在独立于服务,允许用户在自行创建的did下,通过控制与did关联的私钥来收集和管理自己的身份凭证。目前已有许多的did标准,例如microsoft azure ad,weidentity,hyperledger indy等。然而上述所有的did方法中都有几个待解决的问题。首先,这些方法大都假设存在一个由凭证发行者组成的生态系统,但都没有说明如何实现它;其次这些方法均为考虑与现有互联网基础设施的兼容性。
技术实现思路
1、本专利技术的目的在于提供一种与现有互联网基础设施充分兼容的去中心化身份认证方法,兼具匿名性和灵活性,方法将数字账户以非同质化代币的方式存储在链上,通过密码学的方式隐藏了用户信息
2、本专利技术提出的基于智能合约非同质化代币的去中心化匿名身份认证方法涉及以下参与者:用户、服务提供商(isp)以及部署在太坊上的智能合约,具体包含以下两个合约:
3、数字账户管理合约(damc),提供创建da的接口:create(uint256 tokenid,string_tokenuri)→bool
4、身份认证合约(ipc),提供登录接口login(uint256[5]proof,stringdeclaration);提供查询接口query(uint256 key)→string,uint256
5、本专利技术提出的身份认证方法基本流程如下:
6、(一)创建数字账户
7、用户向isp发送创建da的申请,平台生成一个身份标识串puid,puid在isp内部可以唯一表示一个账户,或者与平台内部已有用户系统中的某个账户进行绑定,随后isp将puid与自己的公钥ppk返回给用户;
8、用户在账户钱包中选择一个数字身份密钥对(usk,upk),再使用分层确定性钱包的子节点派生算法生成一个新的子密钥对(sk,pk);再做如下计算:
9、tokenid=hash(pk);hash为常用的哈希算法
10、str1=comp(puid*pk);将puid和公钥pk作椭圆曲线上的乘法,再将得到的坐标点作压缩处理
11、str2=comp(asymencrypt(puid,ppk));用ppk对puid进行椭圆曲线上的非对称加密,并对结果中的坐标点作压缩处理
12、str3=symencrypt(puid,usk);用usk对puid进行对称加密
13、tokenuri='-'.join([str1,str2,str3]);将str1,str2和str3三个字符串依次拼接,并用减号“-”分隔;
14、最后,用(sk,pk)发送交易,调用合约damc的create接口,将tokenid和tokenuri作为参数传入;
15、damc的create接口会创建一个nft,设置tokenid的同时,将交易的发起者地址设置为nft的owner;随后调用erc721uristorage的_settokenuri设置tokenuri;如果整个过程成功,就将tokenid作为返回值;
16、用户在成功调用create后,将tokenid和对应的puid告知isp,随后isp调用tokenuri验证用户是否创建了da,并将查询到的tokenuri的第二部分(上一步骤中的str2)解压解密,判断得到的结果是否与puid一致;若一致,isp可激活puid对应的账户。
17、(二)链上登录
18、用户选取数字身份(usk,upk),创建json格式的声明,将声明以base64url格式进行编码得到d;再做如下计算:
19、生成随机数r,计算r*g=r
20、计算key=hash(r,d)
21、计算s=r+key*usk
22、记proof=[r,s,upk],declaration=d
23、本地保存r和key,账户钱包本质上是一个应用软件,具备存储功能;同时调用ipc的login接口,并将proof和declaration作为参数传入;
24、ipc的login接口首先对输入的证明proof进行验证,本质上是schnorr签名算法的验证过程,即验证下列等式是否成立
25、s*g?=r+hash(r,d)*upk
26、验证成功后,代码继续执行,以hash(r,d)为键,传入的声明字符串declaration和证明中的s为值,构造出来的键值对分别保存,便于后续查询。
27、(三)链下登录
28、用户在账户钱包中获取da的id,如果有缓存就读缓存,没有的话就根据da的公钥pk计算daid=hash(pk),将daid放入钱包缓存便于下次读取;
29、站在用户的角度看到的是一个个数字身份da,而站在区块链的角度da的本质是一个个nft,所以daid就是对应的nft的tokenid;
30、随后用户在账户钱包中获取该da对应的puid,如果有缓存就读缓存,理论上最初创建da时账户钱包就应该将puid记录在本地本文档来自技高网
...
【技术保护点】
1.一种基于智能合约非同质化代币的去中心化匿名身份认证方法,其特征在于具体步骤如下:
2.根据权利要求1所述的一种基于智能合约非同质化代币的去中心化匿名身份认证方法,其特征在于,步骤(1)中用户在账户钱包中选择一个数字身份密钥对(usk,UPK),再使用分层确定性钱包的子节点派生算法生成一个新的子密钥对(sk,PK);再做如下计算:
3.根据权利要求1所述的一种基于智能合约非同质化代币的去中心化匿名身份认证方法,其特征在于,步骤(2)中用户选取数字身份(usk,UPK),创建json格式的声明,将声明以Base64URL格式进行编码得到D;再做如下计算:
4.根据权利要求1所述的一种基于智能合约非同质化代币的去中心化匿名身份认证方法,其特征在于,步骤(3)中用户在账户钱包中获取DA的ID,如果有缓存就读缓存,没有的话就根据DA的公钥PK计算DAID=Hash(PK),将DAID放入钱包缓存便于下次读取;
5.根据权利要求1所述的一种基于智能合约非同质化代币的去中心化匿名身份认证方法,其特征在于,步骤(3)中验证签名过程如下:
6.根据权利要求1所述的基于智能合约非同质化代币的去中心化匿名身份认证方法,其特征在于,步骤(1)中所述的身份密文是连接用户的公私钥以及用户在服务供应商中传统账户的桥梁,整个“连接”的过程零知识的,任何第三方都无法从中获取关于用户公私钥或者服务供应商账户的任何信息,具有良好的匿名性。
7.根据权利要求1所述的基于智能合约非同质化代币的去中心化匿名身份认证方法,其特征在于,步骤(1)中所述的数字身份是以非同质化代币(NFT)的形式公开存储在链上,具备NFT的交易,销毁功能。
8.根据权利要求1所述的基于智能合约非同质化代币的去中心化匿名身份认证方法,其特征在于,步骤(2)中所述的链上登录过程是在公开的,链上会话所包含的信息是一次性的也是零知识的。
...
【技术特征摘要】
1.一种基于智能合约非同质化代币的去中心化匿名身份认证方法,其特征在于具体步骤如下:
2.根据权利要求1所述的一种基于智能合约非同质化代币的去中心化匿名身份认证方法,其特征在于,步骤(1)中用户在账户钱包中选择一个数字身份密钥对(usk,upk),再使用分层确定性钱包的子节点派生算法生成一个新的子密钥对(sk,pk);再做如下计算:
3.根据权利要求1所述的一种基于智能合约非同质化代币的去中心化匿名身份认证方法,其特征在于,步骤(2)中用户选取数字身份(usk,upk),创建json格式的声明,将声明以base64url格式进行编码得到d;再做如下计算:
4.根据权利要求1所述的一种基于智能合约非同质化代币的去中心化匿名身份认证方法,其特征在于,步骤(3)中用户在账户钱包中获取da的id,如果有缓存就读缓存,没有的话就根据da的公钥pk计算daid=hash(pk),将daid放入钱包缓存便...
【专利技术属性】
技术研发人员:阚海斌,黄金荣,刘百祥,张展鹏,
申请(专利权)人:复旦大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。