CN115051848A - 一种基于区块链的身份认证方法 - Google Patents
一种基于区块链的身份认证方法 Download PDFInfo
- Publication number
- CN115051848A CN115051848A CN202210641208.6A CN202210641208A CN115051848A CN 115051848 A CN115051848 A CN 115051848A CN 202210641208 A CN202210641208 A CN 202210641208A CN 115051848 A CN115051848 A CN 115051848A
- Authority
- CN
- China
- Prior art keywords
- user
- csp
- information
- block chain
- identity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 73
- 238000012795 verification Methods 0.000 claims description 21
- 230000008520 organization Effects 0.000 abstract description 14
- 239000004744 fabric Substances 0.000 abstract description 9
- 238000005516 engineering process Methods 0.000 abstract description 6
- 238000002955 isolation Methods 0.000 abstract description 2
- 238000012217 deletion Methods 0.000 description 6
- 230000037430 deletion Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0807—Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3297—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种基于区块链的身份认证方法,在区块链技术框架之中创建基于Hyperledger Fabric模型的身份认证方法。将身份认证技术中所包含的传统密码学理论融入到该模型中,采用框架中组织与通道隔离的概念,对云环境下的组织结构进行抽象,形成包含云服务提供商组织和云数据中心组织的网络拓扑;利用密码理论,将JSON Web Token作为用户唯一的身份凭证,设计生成用户身份接入申请和验证用户身份接入申请协议;本发明在保证用户身份信息安全的基础上,可以实现分布式、透明性和可监管性的认证过程。
Description
技术领域
本发明属于区块链技术领域,具体涉及一种基于区块链的身份认证方法。
背景技术
随着云环境的发展与普及,识别用户身份的方法变得越来越数字化。很多互联网公司为了便利,采用最传统的口令认证方式。在保证安全的前提下,用户需在不同的应用下使用不同的用户名和密码,由于应用服务数量的快速增长,用户所需记忆的用户名和口令的数量也随之增长,对于那些安全意识比较薄弱的用户,可能采用通用的口令或者某个易于记忆的口令来解决这个问题,但是这种口令的安全性非常脆弱,很容易被破解。为此云服务提供商在应用服务开发层增加口令的限制,比如强制要求口令中有大小写字母、特殊字符等。但这种方式让口令更加的复杂化,在造成不良用户体验的同时更增加了撞库的风险。
针对目前云环境下应用服务多样化造成用户口令复杂化的问题,云服务提供商提供了基于Token的认证方式,在该认证方式中涉及到三种角色:云用户、CSP、IDM(IdentityManagement),其中IDM担当可信第三方的角色,向CSP证明一个合法用户的身份。云环境下通过IDM实现身份认证具体流程如下:
(1)云用户首先利用注册过的账户和口令向IDM证明身份;
(2)云用户向CSP发起访问资源的请求;
(3)CSP向云用户请求Token;
(4)云用户向IDM发起Token的请求;
(5)IDM产生Token,然后把Token分别传输给云用户和CSP;
(6)云用户将从IDM获得的Token传递给CSP;
(7)CSP对比IDM和云用户发送的Token;
待验证通过后,向云用户返回可以访问的消息。如上所述的身份认证过程,可以看出IDM在整个认证过程的核心地位,它是CSP和云用户之间的信任桥梁。因此云环境下传统的身份认证有以下三个问题:
1)中心化认证单点故障问题:
在传统的云环境身份认证中,IDM一般是经过CA签发的,并且将用户身份凭证(口令、生物特征模板等)存储在服务端进行集中式管理,一旦服务端遭受攻击,所有用户凭证都存在泄露的风险,容易形成大规模的攻击威胁。此外,如果服务端出现自身故障,还存在整个系统无法使用的风险,造成恶劣影响。
2)身份信息安全与隐私问题:
传统云环境身份认证模型还存在用户隐私信息被泄漏滥用的风险。由于数字身份信息通常和用户真实身份绑定,非法用户通过中间人攻击将用户的真实身份信息挖掘出来,造成隐私和信息泄漏甚至被非法交易。另外,用户的隐私信息存在被身份服务提供方或应用服务方滥用。
3)身份数据的价值问题:
传统的云环境身份认证中,用户对身份信息不具有控制权。通常在云环境下用户对数据的控制入口是云服务提供商提供的数字身份,传统数字身份的属性限定了用户和服务商仅为租赁关系,云服务提供商对用户的数字身份具有决定权和管理权。
发明内容
为了解决现有技术中存在的上述问题,本发明提供一种基于区块链的身份认证方法。本发明要解决的技术问题通过以下技术方案实现:
本发明提供的一种基于区块链的身份认证方法,应用于云环境下基于身份认证的网络拓扑中,网络拓扑位于区块链中,网络拓扑包括已经授权的云用户端、云服务提供商CSP以及云数据中心CDC,身份认证方法包括:
云用户端,用于在注册过程中根据用户操作产生注册请求发送至CSP;
CSP,用于在自身账本中查找云用户端是否存在,如果不存在则将注册请发送至CDC;
CDC,用于响应注册请求,生成用户的唯一身份凭证;将唯一身份凭证经过秘密密钥加密后,连同秘密密钥作为区块链信息一并进行存储,并将加密过的唯一身份凭证再进行Base64编码后通过CSP返回至云用户端;
云用户端,用于将接收的响应信息,通过用户私钥对其秘密密钥解密,再通过解编码以及秘密密钥解密文后,得到唯一身份凭证;并在验证过程中将唯一身份凭证通过秘密密钥加密以及编码,并根据编码的唯一身份凭证以及用户身份信息生成登录请求发送至CSP;
CSP,用于判断登录请求中的用户身份信息是否在自身存储,如果存在,则将登录请求发送至CDC;
CDC,用于在自身查询用户身份信息,确定用户的区块链信息;将区块链信息中的唯一身份凭证通过秘密密钥解密,得到明文唯一身份凭证;将登录请求中编码的唯一身份凭证与明文唯一身份凭证进行比对确定是否相同,如果相同则向云用户端发送响应信息并更新用户访问区块链信息的时间。
可选的,注册请求中包括:用户在区块链中的账户ID、用户基础信息以及避免重放攻击的时间戳;自身账本中存储有账号ID、用户基础信息以及账号ID对应的第一区块链信息,该第一区块链信息包括:用户经过Base64编码的公钥,用户注册时间的时间,用户登录时间以及登录成功与否的记录。
可选的,CSP,用于在自身账本中查找云用户端是否存在,如果不存在则将注册请发送至CDC包括:
CSP,用于自身账本中查找发送注册请求的账号ID是否存在,如果存在,则向云用户端告知;如果不存在,则调用cdc相关接口将用户在区块链中的账号ID以及用户基础信息作为接口参数传入至CDC中。
可选的,CDC,用于响应注册请求,生成用户的唯一身份凭证;将唯一身份凭证经过秘密密钥加密后,连同秘密密钥作为区块链信息一并进行存储,并将加密过的唯一身份凭证再进行Base64编码后通过CSP返回至云用户端包括:
CDC,用于响应于注册请求,生成用户的唯一身份凭证JWT;
截取唯一身份凭证中的Payload作为该用户的认证凭证JWT_P;
对认证凭证JWT_P使用秘密密钥Kcdc进行加密,得到结果C1;
使用Base64对加密结果C1编码得到结果C2;
使用公钥PKuser对秘密密钥Kcdc加密得到结果K`;
将秘密密钥Kcdc以及结果K`作为第二区块链信息进行存储;
将加密结果K`以及结果C2通过CSP反馈至云用户端。
可选的,在通过CSP返回至云用户端之前,身份认证方法还包括:
CSP,用于将加密结果K`、结果C2以及避免重放攻击的时间戳反馈至云用户端,并将用户在区块链中的账户ID、用户基础信息以及其他注册信息进行存储。
可选的,用于将接收的响应信息,通过用户私钥对其秘密密钥解密,再通过解编码以及秘密密钥解密文后,得到唯一身份凭证;并在验证过程中将唯一身份凭证通过秘密密钥加密以及编码,并根据编码的唯一身份凭证以及用户身份信息生成登录请求发送至CSP包括:
云用户端,用于私钥Kpku对加密结果K`解密,得到秘密密钥Kcdc;
对编码结果C2进行Base64解码,得到结果C1;
使用秘密密钥(Kcdc)对结果C1解密,得到认证凭证JWT_P;
将秘密密钥Kcdc以及认证凭证JWT_P进行本地存储;
在验证过程中,使用CDC的公钥对存储在本地的唯一身份凭证进行加密,得到结果C1;使用Base64对得到的结果C1编码,得到认证凭证JWT`;
将用户在区块链中的账户ID、用户基础信息以及认证凭证JWT`作为请求参数,生成登录请求;
将登录请求发送至CSP。
可选的,CSP,用于判断登录请求中的用户身份信息是否在自身存储,如果存在,则将登录请求发送至CDC包括:
CSP,用于在接收登录请求后,在账本中查找用户在区块链的账号ID,如果查找到则将用户在区块链中的账户ID以及认证凭证JWT`作为调用参数,调用响应接口传送至CDC;如果没有查找到,则向云用户端告知。
可选的,CDC,用于在自身查询用户身份信息,确定用户的区块链信息;将区块链信息中的唯一身份凭证通过秘密密钥解密,得到明文唯一身份凭证;将登录请求中编码的唯一身份凭证与明文唯一身份凭证进行比对确定是否相同,如果相同则向云用户端发送响应信息并更新用户访问区块链信息的时间包括:
CDC,用于在自身查找接收到的账号ID,得到该账号ID对应的第二区块链信息;对第二区块链信息中的结果C1解密得到明文JWT_P;将认证凭证JWT`于明文JWT_P进行比对确认是否相同;如果相同,则向CSP响应云用户端认证正确,并添加用户认证时间至区块链信息中以更新区块链信息。
可选的,在验证过程结束之后,身份认证方法包括:
云用户端,用于向CSP发送查询请求;
其中,查询请求包括用户在区块链中的账号ID、用户基础信息以及避免重放攻击的时间戳;
CSP,用于接收到查询请求后,查询账号ID是否在自身账本中,如果不存在则告知云用户端,如果存在则将该账号ID对应的第一区块链信息反馈给云用户端。
可选的,在将该账号ID对应的区块链信息反馈给云用户端之后,身份认证方法包括:
云用户端,用于向CSP发送注销待注销用户的身份信息注销请求;
其中,身份信息注销请求包括待注销用户在区块链中的账号ID、用户基础信息以及避免重放攻击的时间戳;
CSP,用于接收到身份信息注销请求后,向CDC发送注销待注销用户的身份信息的注销请求;
CDC,用于响应于注销请求,在自身存储的区块链信息中确定待注销用户的第二区块链信息;将待注销用户的第二区块链信息的有效字段设置为false,并向CSP响应注销成功的消息;
CSP,用于在得到注销成功的消息后,在自身账本中查找待注销用户的第一区块链信息;将该第一区块链信息的有效字段设置为false,向云用户端反馈注销成功的消息。
本发明提供了一种基于区块链的身份认证方法,在区块链技术框架之中创建基于Hyperledger Fabric模型的身份认证方法。将身份认证技术中所包含的传统密码学理论融入到该模型中,采用框架中组织与通道隔离的概念,对云环境下的组织结构进行抽象,形成包含云服务提供商组织和云数据中心组织的网络拓扑;利用密码理论,将JSON Web Token作为用户唯一的身份凭证,设计生成用户身份接入申请和验证用户身份接入申请协议;本发明在保证用户身份信息安全的基础上,可以实现分布式、透明性和可监管性的认证过程。
以下将结合附图及实施例对本发明做进一步详细说明。
附图说明
图1是本发明实施例提供的基于Fabric身份认证网络拓扑示意图;
图2是本发明实施例提供的基于Fabric网络的身份管理及认证过程示意图;
图3是本发明实施例提供的生成用户身份接入申请协议过程示意图;
图4是本发明实施例提供的验证用户身份接入申请协议过程示意图;
图5是本发明实施例提供的用户信息查询协议过程示意图;
图6是本发明实施例提供的用户身份信息注销协议过程示意图。
具体实施方式
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
在介绍本发明之前,首先对本发明的应用背景作出介绍。
区块链是结合了P2P网络、共识算法、密码学技术、分布式等理论的新技术,其因具有去中心化、公开透明、可追溯等特点被应用在现实生活中的很多领域。区块链去中心化的服务,使得区块链系统中的每个参与者既是服务端又是客户端,解决了传统中心化服务存在的单点故障以及效率问题;区块链基于拜占庭容错性,只要系统中的恶意节点个数不超过51%,整个系统的安全性都不会受到威胁,即使某些节点出现问题,也不影响系统的运行。
区块链给云环境下的应用提供了解决用户信任问题的新途径。现有的基于区块链的身份认证方案大多数是在公有链框架的基础上设计的,解决了传统身份认证对第三方IDM的过分依赖以及单点故障的问题。但是,公有链的特性是任何人都可以加入到链中成为其中的一员,这就将整个协议暴露在更大的敌手环境中,增加了协议被攻击的可能性;另外许多方案在设计时将用户的身份信息和身份凭证绑定在一起存储在区块链的账本中,提高认证的透明度,没有考虑对用户身份隐私的保护。比如,基于以太坊的身份认证方案(EIDM),使用智能合约解决了云环境下传统身份认证中对第三方IDM的过分依赖的问题。但是,EIDM采用JSON Web Token(JWT)作为用户身份的唯一凭证时,需要将身份信息存储在智能合约里,然后才能生成对应的唯一身份凭证,在这一点上,用户的隐私信息会透露给CSP,并通过CSP所服务的节点暴露在公有链上,大大增加了用户隐私泄露的风险。
本发明将联盟链中分布式、共识等技术运用到云环境身份认证中。结合联盟链设计一种基于Fabic模型的身份认证模型,即为一种身份认证协议。
本发明提供的一种基于区块链的身份认证方法,应用于云环境下基于身份认证的网络拓扑中,网络拓扑位于区块链中,网络拓扑包括已经授权的云用户端、云服务提供商CSP以及云数据中心CDC,身份认证方法包括:
参考图1,一个CSP代表一个组织,对于一个CSP提供商可能有不同的资源服务面向云用户,比如说一个CSP可能既向用户提供计算服务又向用户提供存储服务,所以CSP所提供的不同服务都可以将其加入到该CSP组织中;另外创建一个CDC组织,CDC主要完成用户信息的注册,以及用户信息的验证。CDC组织中的某个节点可以和CSP中的指定节点进行通信,并且他们在同一个通道中,共享用一个区块链。
HyperledgerFabric中对于相同通道中的节点共享一份账本,CSP向用户提供服务的节点不止一个,作为区块链网络的管理员,监控着整个网络中的状态,也能看到相应区块中的信息,在网络环境当中最可信的只有自己,所以用户的身份凭证必须以密文的形式存储在区块中,并且在传输的过程中也必须是以密文的形式,从而防止中间人为攻击的可能。身份协议设计中使用的符号如下表1所示。
表1身份认证协议中符号说明
基于Fabric模型的身份认证协议主要包含生成用户身份接入申请、验证用户身份接入申请、用户身份信息查询以及用户身份信息注销模块,下面介绍每个模块中具体协议的设计,具体过程如下:
如图2所示本发明的一种基于区块链的身份认证方法包括:
云用户端,用于在注册过程中根据用户操作产生注册请求发送至CSP;
CSP,用于在自身账本中查找云用户端是否存在,如果不存在则将注册请发送至CDC;
其中,注册请求中包括:用户在区块链中的账户ID、用户基础信息以及避免重放攻击的时间戳;自身账本中存储有账号ID,用户基础信息以及账号ID对应的第一区块链信息,该第一区块链信息包括:用户的公钥,用户注册时间的时间,用户登录时间以及登录成功与否的记录。
CSP,用于在自身账本中查找云用户端是否存在,如果不存在则将注册请发送至CDC包括:
CSP,用于自身账本中查找发送注册请求的账号ID是否存在,如果存在,则向云用户端告知;如果不存在,则调用CDC相关接口将用户在区块链中的账号ID以及用户基础信息作为接口参数传入至CDC中。
CDC,用于响应注册请求,生成用户的唯一身份凭证;将唯一身份凭证经过秘密密钥加密后,连同秘密密钥作为区块链信息一并进行存储,并将加密过的身份凭证再进行Base64编码后通过CSP返回至云用户端;
云用户端,用于将接收的响应信息,通过用户私钥对其秘密密钥解密,再通过解编码以及秘密密钥解密文后,得到唯一身份凭证;并在验证过程中将唯一身份凭证通过秘密密钥加密以及编码,并根据编码的唯一身份凭证以及用户身份信息生成登录请求发送至CSP;
CSP,用于判断登录请求中的用户身份信息是否在自身存储,如果存在,则将登录请求发送至CDC;
本发明的CSP,用于在接收登录请求后,在账本中查找用户在区块链的账号ID,如果查找到则将用户在区块链中的账户ID以及认证凭证JWT`作为调用参数,调用响应接口传送至CDC;如果没有查找到,则向云用户端告知。本发明可以搭建Fabric网络,利用Fabric框架提供的链码开发接口,使用Golang语言实现此方案中的协议过程。
CDC,用于在自身查询用户身份信息,确定用户的区块链信息;将区块链信息中的唯一身份凭证通过秘密密钥解密,得到明文唯一身份凭证;将登录请求中编码的唯一身份凭证与明文唯一身份凭证进行比对确定是否相同,如果相同则向云用户端发送响应信息并更新用户访问区块链信息的时间。
本发明主要分为三个过程:
1)用户信息发布过程(用户身份信息注册):
首先,用户使用已经授权的客户端加入到区块链网络中。用户向CSP发送注册请求,CSP调用注册接口(部署在CSP上的链码所提供的接口),将用户身份信息作为参数传入,在区块链网络中CSP会调用其他节点上所部署的链码,利用用户身份信息生成唯一的身份凭证,然后将用户对应的身份凭证存储在区块中,在完成了用户身份凭证的生成以及存储后,CSP将用户的身份凭证返回给用户,用户再得到相应的身份凭证后将其存储在本地,用于之后身份信息认证操作。
2)用户信息认证过程:
用户使用客户端进行登录操作,将唯一凭证通过加密的方式发送给CSP,CSP调用验证接口(部署在CSP上的链码所提供的接口),将用户ID以及唯一凭证作为参数传入,CSP调用其他节点上所部署的链码,其他节点使用CSP所提供的用户的身份凭证和区块中存储的对应用户身份凭证进行对比操作,验证完成后,向CSP返回验证结果,同时CSP向用户返回验证结果。
参考图3,本发明中CDC,用于响应注册请求,生成用户的唯一身份凭证;将唯一身份凭证经过秘密密钥加密后,连同秘密密钥作为区块链信息一并进行存储,并将加密过的身份凭证再进行Base64编码后通过CSP返回至云用户端包括:
CDC,用于响应于注册请求,生成用户的唯一身份凭证JWT;
截取唯一身份凭证中的Payload作为该用户的认证凭证JWT_P;
对认证凭证JWT_P使用秘密密钥Kcdc进行加密,得到结果C1;
使用Base64对加密结果C1编码得到结果C2;
使用公钥PKuser对秘密密钥Kcdc加密得到结果K`;
将秘密密钥Kcdc以及结果C1作为第二区块链信息进行存储;
将加密结果K`以及结果C2通过CSP反馈至云用户端。
如图3所示,用户注册过程主要是用户将身份信息发送给CSP,CSP传送至CDC,CDC生成身份信息对应的身份凭证,然后经过一系列过程CDC和CSP将用户对应的身份凭证存储在区块中,并将身份凭证向用户返回,用户最初会在本地生成一个密钥对,比如RSA密钥对(PKu,Kpku),将公钥放到公开目录中,以供其他实体获取,为之后安全的传输用户的唯一身份凭证提供先决条件。用户向CSP发送的注册请求消息如下:
User->CSP:Request_Enroll(IDu,Username,Tu)
请求中的包含用户的IDu、用户名Username以及时间戳Tu,其中Tu为了防御重放攻击。CSP收到用户的请求后,用IDu在本地的账本查找是否有IDu对应的区块信息。如果存在向用户返回包含Tcsp用户已经存在的消息m,否则CSP将用户注册的身份信息中的IDu和Username发送给CDC,以供CDC生成用户的唯一身份凭证。
CDC收到CSP的消息后,得到用户的IDu和Username,将二者作为参数调用本地生成用户的唯一身份凭证接口,生成IDu对应的JWT;截取JWT中的Payload作为用户的身份凭证JWT_P。使用秘密密钥Kcdc对JWT_P加密得到C1=E(Kcdc,JWT_P),然后使用Base64对C1编码得到C2=Base64(C1),再使用公共目录中用户PKu对Kcdc加密得到K’=E(PKu,Kcdc),CDC将秘密密钥Kcdc以及加密过后的C1存储到区块中,最后向CSP返回(K’,C2)。
本发明在通过CSP返回至云用户端之前,身份认证方法还包括:
CSP,用于将加密结果K`、结果C2以及避免重放攻击的时间戳反馈至云用户端,并将用户在区块链中的账户ID、用户基础信息以及其他注册信息进行存储。
值得说明的是:同样CSP也会将用户更加详细:包括用户ID用户名、用户注册状态时间相关信息存储在区块中,以便之后用户信息查询的操作。之后CSP向用户返回注册结果消息如下:
CSP->User:Respond(E(PKu,Kcdc),Base64(E(Kcdc,JWT_P)),Tcsp)
其中Tcsp为CSP产生的时间戳。最后用户收到CSP返回的消息后,进行操作De(Kpku,K’),使用自己的私钥Kpku对K’解密得到Kcdc存储在本地,然后进行操作De(Kcdc,DeBase64(C2)),使用Kcdc对解编码后的C1解密得到JWT_P,将其存储在本地,以供之后认证过程中的使用。
参考图4,本发明的云用户端,用于将接收的响应信息,通过用户私钥对其秘密密钥解密,再通过解编码以及秘密密钥解密文后,得到唯一身份凭证;并在验证过程中将唯一身份凭证通过秘密密钥加密以及编码,并根据编码的唯一身份凭证以及用户身份信息生成登录请求发送至CSP包括:
云用户端,用于私钥Kpku对加密结果K`解密,得到秘密密钥Kcdc;
对编码结果C2进行Base64解码,得到结果C1;
使用秘密密钥(Kcdc)对结果C1解密,得到认证凭证JWT_P;
将秘密密钥Kcdc以及认证凭证JWT_P进行本地存储;
在验证过程中,使用CDC的公钥对存储在本地的唯一身份凭证进行加密,得到结果C1;使用Base64对得到的结果C1编码,得到认证凭证JWT`;
将用户在区块链中的账户ID、用户基础信息以及认证凭证JWT`作为请求参数,生成登录请求;
将登录请求发送至CSP。
本发明的CDC,用于在自身查询用户身份信息,确定用户的区块链信息;将区块链信息中的唯一身份凭证通过秘密密钥解密,得到明文唯一身份凭证;将登录请求中编码的唯一身份凭证与明文唯一身份凭证进行比对确定是否相同,如果相同则向云用户端发送响应信息并更新用户访问区块链信息的时间包括:
CDC,用于在自身查找接收到的账号ID,得到该账号ID对应的第二区块链信息;对第二区块链信息中的结果C1解密得到明文JWT_P;将认证凭证JWT`于明文JWT_P进行比对确认是否相同;如果相同,则向CSP响应云用户端认证正确,并添加用户认证时间至区块链信息中以更新区块链信息。
如图4所示,用户使用唯一凭证登录CSP提供的系统,CSP对用户发送的唯一凭证和本地存储对应用户的唯一凭证进行比较,如果相同认证通过,否则认证失败,
用户向CSP发送的登录请求的消息内容如下:
User->CSP:Request_Verify(IDu,Username,Base64(E(PKcdc,JWT’)),Tu)
其中IDu和Username是用户注册时的ID和用户名,以供CSP和CDC查找用户在账本中对应的区块信息;Tu为用户产生的时间戳;lJWT’是用户之前注册形成的用户唯一身份凭证(存储在本地),使用CDC的公钥对存储在本地的唯一身份凭证进行加密,之后对密文进行Base64编码Base64(E(PKcdc,JWT’)),最终形成用户向CSP发送的登录请求。
CSP收到用户的请求后,判断IDu对应的区块在本地的账本中是否存在,如果不存在向用户返回包含E(PKu,Rcsp)尚未注册的消息m1,否则CSP将用户登录的信息IDu,Base64(E(PKcdc,JWT’||Ru))发送给CDC。
CDC收到CSP的消息后,解析消息后得到IDu与Base64(E(PKcdc,JWT’))。CDC通过IDu在账本中查找用户对应的区块信息,得到存储在区块中该用户加密的JWT_P(Base64(E(Kcdc,JWT_P))),进行解编码后进行解密操作De(Kcdc,E(Kcdc,JWT_P))得到明文JWT_P;CDC使用自己的私钥进行De(Kpkcdc,E(PKcdc,JWT’))操作得到明文JWT’;最后对比JWT_P与JWT’是否相等。向CSP返回包含Ru的验证是否通过消息m2,并更新区块的信息添加用户认证的时间。
CSP收到CDC返回的结果信息,更新用户访问区块的时间信息,以供之后追溯用户何时进行过认证提供条件,并响应用户:
CSP->User:Respond(m2)
其中m2中包含Tcsp的验证成功与否的消息,用户得到CSP返回的消息进行下一步相应操作。
参考图5,本发明在验证过程结束之后,身份认证方法包括:
云用户端,用于向CSP发送查询请求;
其中,查询请求包括用户在区块链中的账号ID、用户基础信息以及避免重放攻击的时间戳;
CSP,用于接收到查询请求后,查询账号ID是否在自身账本中,如果不存在则告知云用户端,如果存在则将该账号ID对应的第一区块链信息反馈给云用户端。
3)用户身份信息查询
1.user向csp发送身份信息查询请求;
请求参数:
IDu:user给在区块链中的账户ID;
UserName:可以理解为一些user基本信息;
Tu:避免重放攻击的时间戳;
2.csp收到user的查询请求信息之后,根据IDu判断user是否存在于系统当中。
①若不存在则告知user;
②若存在则向用户响应其IDu所对应区块当中的用户信息。
用户身份信息查询的过程很简单,整个身份信息查询的过程中只是与CSP之间进行交互,因为CSP节点的账本中记录每个用户注册以及登录认证的信息,所以用户身份信息查询所查的信息包括用户的ID,用户账号名,以及用户经过Base64编码的公钥,另外还有注册用户的时间,还可以追溯用户在注册后何时进行过登录操作(包括成功和不成功操作)的记录。
如图5所示的用户查询协议,用户向CSP发送查询请求的内容如下所示:
User->CSP:Request_Query(IDu,Username,Tu)
其中查询请求中包含用户的ID、用户名以及用户产生的时间戳Tu。主要是用户的ID以供CSP在其本地账本查询用户对应的区块信息。
CSP收到用户的查询请求的消息后,根据用户请求中的ID,查询用户是否存在于系统中,如果不存在向用户返回该用户在系统中不存在的消息m1;否则CSP遍历整个账本中该用户对应的所有的区块信息,并向用户返回与用户相关的区块信息m2。其中m1与m2中都包含Tcsp。
如图6所示,本发明在将该账号ID对应的区块链信息反馈给云用户端之后,身份认证方法包括:
云用户端,用于向CSP发送注销待注销用户的身份信息注销请求;
其中,身份信息注销请求包括待注销用户在区块链中的账号ID、用户基础信息以及避免重放攻击的时间戳;
CSP,用于接收到身份信息注销请求后,向CDC发送注销待注销用户的身份信息的注销请求;
CDC,用于响应于注销请求,在自身存储的区块链信息中确定待注销用户的第二区块链信息;将待注销用户的第二区块链信息的有效字段设置为false,并向CSP响应注销成功的消息;
CSP,用于在得到注销成功的消息后,在自身账本中查找待注销用户的第一区块链信息;将该第一区块链信息的有效字段设置为false,向云用户端反馈注销成功的消息。
4)用户身份信息注销:
1.user向csp发送身份信息查询请求
请求参数:
IDu:user给在区块链中的账户ID;
UserName:可以理解为一些user基本信息;
Tu:避免重放攻击的时间戳;
2.csp收到user的查询请求信息之后,根据IDu判断user是否存在于系统当中。
①若不存在则告知user;
②若存在则向用户响应其IDu所对应区块当中的用户信息;
3.user向csp发送身份信息注销请求;
请求参数:
IDu:user给在区块链中的账户ID;
UserName:可以理解为一些user基本信息;
Tu:避免重放攻击的时间戳;
4.csp收到user的查询请求信息之后,向cdc发送注销user身份申请
请求参数:
IDu:user给在区块链中的账户ID;
UserName:可以理解为一些user基本信息;
5.cdc在收到csp的调用后,拿到相应的参数;
①通过查找IDu,得到该user所对应的区块信息(即加密过的JWT_P)
②对该区块相应的有效性字段设置为false;
③向csp响应删除完成;
6.csp在收到cdc的响应后,
①通过查找IDu,得到该user所对应的区块信息;
②对该区块相应的有效性字段设置为false;
③向user响应删除完成。
用户身份信息的注销必须是在用户身份认证成功后才能做的操作,而在Hyperledger Fabric中对一个账本中记录的删除不是真正意义上的删除,做删除的操作只是将某一个区块中的一个字段置为False,此后查询的操作结果不会显示该区块,也就是说对于一个用户身份信息进行了注销操作,此后不能再查询到该用户对应的区块的信息,但是该用户在注销前做的所有的操作还是被记录保存在账本当中,只要账本存在那么用户相应的区块信息永远的保存在账本中,只是提供的接口不能再查询到记录的存在。另外注销了的用户ID不能被其他用户注册占用。用户身份信息注销,主要是查找对应用户账本中有记录的区块分别将CSP节点上的账本和CDC中的账本对应的区块的字段置位False即可。如图6所示的用户身份信息注销协议。用户在登录认证成功的情况下才具有权限注销其身份信息。用户向CSP发送如下的注销请求信息:
User->CSP:Request_Delete(IDu,Username,Tu)
消息中包含的内容是用户的ID、用户名和Tu,其中用户的ID以供CSP在其本地账本查询用户对应的区块信息。
CSP收到用户的注销请求的消息后,将用户的注销消息发送给CDC,CDC解析消息后得到用户ID,查找账本中用户对应的区块记录将用户对应的所有区块信息删除,并向CSP返回是否删除成功的消息m2。CSP根据m2判断是否删除账本中和用户相关的所有区块信息。完成以上的步骤后,CSP向用户返回注销结果消息:
CSP->User:Respond(m)
其中m代表包含Tcsp的是否删除成功的信息。
本发明提供的一种基于区块链的身份认证方法,在联盟链技术框架创建基于Fabric的身份认证方法,将身份认证技术中所包含的传统密码学理论融入到Fabric中,采用框架中的组织概念,对云环境下的组织结构进行抽象,形成包含云服务提供商组织和云数据中心组织的网络拓扑;利用密码理论,将JSON Web Token作为用户唯一的身份凭证,设计生成用户身份接入申请、验证用户身份接入申请协议、用户身份信息查询、用户身份信息注销协议;本发明在保证用户身份信息安全的基础上,可以实现分布式、透明性和可监管性的认证过程。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种基于区块链的身份认证方法,应用于云环境下基于身份认证的网络拓扑中,其特征在于,所述网络拓扑位于区块链中,所述网络拓扑包括已经授权的云用户端、云服务提供商CSP以及云数据中心CDC,所述身份认证方法包括:
云用户端,用于在注册过程中根据用户操作产生注册请求发送至CSP;
CSP,用于在自身账本中查找所述云用户端是否存在,如果不存在则将所述注册请发送至CDC;
CDC,用于响应所述注册请求,生成用户的唯一身份凭证;将所述唯一身份凭证经过秘密密钥加密后,连同秘密密钥作为区块链信息一并进行存储,并将加密过的唯一身份凭证再进行Base64编码后通过CSP返回至云用户端;
所述云用户端,用于将接收的响应信息,通过用户私钥对其秘密密钥解密,再通过解编码以及秘密密钥解密文后,得到唯一身份凭证;并在验证过程中将所述唯一身份凭证通过秘密密钥加密以及编码,并根据编码的唯一身份凭证以及用户身份信息生成登录请求发送至CSP;
所述CSP,用于判断登录请求中的用户身份信息是否在自身存储,如果存在,则将所述登录请求发送至所述CDC;
CDC,用于在自身查询用户身份信息,确定用户的区块链信息;将区块链信息中的唯一身份凭证通过秘密密钥解密,得到明文唯一身份凭证;将登录请求中编码的唯一身份凭证与明文唯一身份凭证进行比对确定是否相同,如果相同则向云用户端发送响应信息并更新用户访问区块链信息的时间。
2.根据权利要求1所述的基于区块链的身份认证方法,其特征在于,所述注册请求中包括:用户在区块链中的账户ID、用户基础信息以及避免重放攻击的时间戳;所述自身账本中存储有账号ID、用户基础信息以及账号ID对应的第一区块链信息,该第一区块链信息包括:用户经过Base64编码的公钥,用户注册时间的时间,用户登录时间以及登录成功与否的记录。
3.根据权利要求2所述的基于区块链的身份认证方法,其特征在于,所述CSP,用于在自身账本中查找所述云用户端是否存在,如果不存在则将所述注册请发送至CDC包括:
CSP,用于自身账本中查找发送注册请求的账号ID是否存在,如果存在,则向云用户端告知;如果不存在,则调用cdc相关接口将用户在区块链中的账号ID以及用户基础信息作为接口参数传入至CDC中。
4.根据权利要求3所述的基于区块链的身份认证方法,其特征在于,所述CDC,用于响应所述注册请求,生成用户的唯一身份凭证;将所述唯一身份凭证经过秘密密钥加密后,连同秘密密钥作为区块链信息一并进行存储,并将加密过的唯一身份凭证再进行Base64编码后通过CSP返回至云用户端包括:
所述CDC,用于响应于所述注册请求,生成用户的唯一身份凭证JWT;
截取所述唯一身份凭证中的Payload作为该用户的认证凭证JWT_P;
对所述认证凭证JWT_P使用秘密密钥Kcdc进行加密,得到结果C1;
使用Base64对加密结果C1编码得到结果C2;
使用公钥PKuser对秘密密钥Kcdc加密得到结果K`;
将秘密密钥Kcdc以及结果K`作为第二区块链信息进行存储;
将加密结果K`以及结果C2通过CSP反馈至云用户端。
5.根据权利要求4所述的基于区块链的身份认证方法,其特征在于,在通过CSP返回至云用户端之前,所述身份认证方法还包括:
CSP,用于将加密结果K`、结果C2以及避免重放攻击的时间戳反馈至云用户端,并将用户在区块链中的账户ID、用户基础信息以及其他注册信息进行存储。
6.根据权利要求4所述的基于区块链的身份认证方法,其特征在于,所述用于将接收的响应信息,通过用户私钥对其秘密密钥解密,再通过解编码以及秘密密钥解密文后,得到唯一身份凭证;并在验证过程中将所述唯一身份凭证通过秘密密钥加密以及编码,并根据编码的唯一身份凭证以及用户身份信息生成登录请求发送至CSP包括:
云用户端,用于私钥Kpku对加密结果K`解密,得到秘密密钥Kcdc;
对编码结果C2进行Base64解码,得到结果C1;
使用秘密密钥(Kcdc)对结果C1解密,得到认证凭证JWT_P;
将秘密密钥Kcdc以及认证凭证JWT_P进行本地存储;
在验证过程中,使用CDC的公钥对存储在本地的唯一身份凭证进行加密,得到结果C1;使用Base64对得到的结果C1编码,得到认证凭证JWT`;
将用户在区块链中的账户ID、用户基础信息以及认证凭证JWT`作为请求参数,生成登录请求;
将登录请求发送至CSP。
7.根据权利要求6所述的基于区块链的身份认证方法,其特征在于,所述CSP,用于判断登录请求中的用户身份信息是否在自身存储,如果存在,则将所述登录请求发送至所述CDC包括:
CSP,用于在接收登录请求后,在账本中查找用户在区块链的账号ID,如果查找到则将用户在区块链中的账户ID以及认证凭证JWT`作为调用参数,调用响应接口传送至CDC;如果没有查找到,则向云用户端告知。
8.根据权利要求7所述的基于区块链的身份认证方法,其特征在于,所述CDC,用于在自身查询用户身份信息,确定用户的区块链信息;将区块链信息中的唯一身份凭证通过秘密密钥解密,得到明文唯一身份凭证;将登录请求中编码的唯一身份凭证与明文唯一身份凭证进行比对确定是否相同,如果相同则向云用户端发送响应信息并更新用户访问区块链信息的时间包括:
所述CDC,用于在自身查找接收到的账号ID,得到该账号ID对应的第二区块链信息;对第二区块链信息中的结果C1解密得到明文JWT_P;将认证凭证JWT`于明文JWT_P进行比对确认是否相同;如果相同,则向CSP响应云用户端认证正确,并添加用户认证时间至区块链信息中以更新区块链信息。
9.根据权利要求8所述的基于区块链的身份认证方法,其特征在于,在验证过程结束之后,所述身份认证方法包括:
所述云用户端,用于向CSP发送查询请求;
其中,所述查询请求包括用户在区块链中的账号ID、用户基础信息以及避免重放攻击的时间戳;
所述CSP,用于接收到查询请求后,查询账号ID是否在自身账本中,如果不存在则告知云用户端,如果存在则将该账号ID对应的第一区块链信息反馈给云用户端。
10.根据权利要求9所述的基于区块链的身份认证方法,其特征在于,其特征在于,在所述将该账号ID对应的区块链信息反馈给云用户端之后,所述身份认证方法包括:
所述云用户端,用于向CSP发送注销待注销用户的身份信息注销请求;
其中,所述身份信息注销请求包括待注销用户在区块链中的账号ID、用户基础信息以及避免重放攻击的时间戳;
所述CSP,用于接收到身份信息注销请求后,向CDC发送注销待注销用户的身份信息的注销请求;
CDC,用于响应于注销请求,在自身存储的区块链信息中确定待注销用户的第二区块链信息;将待注销用户的第二区块链信息的有效字段设置为false,并向CSP响应注销成功的消息;
所述CSP,用于在得到注销成功的消息后,在自身账本中查找待注销用户的第一区块链信息;将该第一区块链信息的有效字段设置为false,向云用户端反馈注销成功的消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210641208.6A CN115051848B (zh) | 2022-06-08 | 2022-06-08 | 一种基于区块链的身份认证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210641208.6A CN115051848B (zh) | 2022-06-08 | 2022-06-08 | 一种基于区块链的身份认证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115051848A true CN115051848A (zh) | 2022-09-13 |
CN115051848B CN115051848B (zh) | 2023-12-22 |
Family
ID=83162206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210641208.6A Active CN115051848B (zh) | 2022-06-08 | 2022-06-08 | 一种基于区块链的身份认证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115051848B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109039655A (zh) * | 2018-09-13 | 2018-12-18 | 全链通有限公司 | 基于区块链的实名身份认证方法及装置、身份区块链 |
WO2018233536A1 (zh) * | 2017-06-19 | 2018-12-27 | 阿里巴巴集团控股有限公司 | 一种认证方法、基于区块链的认证数据处理方法及设备 |
CN109450877A (zh) * | 2018-10-25 | 2019-03-08 | 北京九州云腾科技有限公司 | 基于区块链的分布式IDaaS身份统一认证系统 |
CN112241548A (zh) * | 2019-07-18 | 2021-01-19 | 深圳市云歌人工智能技术有限公司 | 基于区块链的用户认证和授权以及进行认证和授权方法 |
US20210194702A1 (en) * | 2017-10-18 | 2021-06-24 | Crosbil Ltd. | Identity authentication method and system, as well as computing device and storage medium |
CN113194082A (zh) * | 2021-04-26 | 2021-07-30 | 中国联合网络通信集团有限公司 | 基于区块链的身份验证方法、区块链平台及运营商平台 |
-
2022
- 2022-06-08 CN CN202210641208.6A patent/CN115051848B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018233536A1 (zh) * | 2017-06-19 | 2018-12-27 | 阿里巴巴集团控股有限公司 | 一种认证方法、基于区块链的认证数据处理方法及设备 |
US20210194702A1 (en) * | 2017-10-18 | 2021-06-24 | Crosbil Ltd. | Identity authentication method and system, as well as computing device and storage medium |
CN109039655A (zh) * | 2018-09-13 | 2018-12-18 | 全链通有限公司 | 基于区块链的实名身份认证方法及装置、身份区块链 |
CN109450877A (zh) * | 2018-10-25 | 2019-03-08 | 北京九州云腾科技有限公司 | 基于区块链的分布式IDaaS身份统一认证系统 |
CN112241548A (zh) * | 2019-07-18 | 2021-01-19 | 深圳市云歌人工智能技术有限公司 | 基于区块链的用户认证和授权以及进行认证和授权方法 |
CN113194082A (zh) * | 2021-04-26 | 2021-07-30 | 中国联合网络通信集团有限公司 | 基于区块链的身份验证方法、区块链平台及运营商平台 |
Also Published As
Publication number | Publication date |
---|---|
CN115051848B (zh) | 2023-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108235805B (zh) | 账户统一方法、装置及存储介质 | |
CN112311530B (zh) | 一种基于区块链的联盟信任分布式身份凭证管理认证方法 | |
CN109618326B (zh) | 用户动态标识符生成方法及服务注册方法、登录验证方法 | |
CN102647461B (zh) | 基于超文本传输协议的通信方法、服务器、终端 | |
US20090240936A1 (en) | System and method for storing client-side certificate credentials | |
US20170099148A1 (en) | Securely authorizing client applications on devices to hosted services | |
CN114679293A (zh) | 基于零信任安全的访问控制方法、设备及存储介质 | |
US20090158394A1 (en) | Super peer based peer-to-peer network system and peer authentication method thereof | |
CN102984127A (zh) | 一种以用户为中心的移动互联网身份管理及认证方法 | |
CN112199726A (zh) | 一种基于区块链的联盟信任分布式身份认证方法及系统 | |
CN105681470A (zh) | 基于超文本传输协议的通信方法、服务器、终端 | |
Yildiz et al. | Connecting self-sovereign identity with federated and user-centric identities via SAML integration | |
Malik et al. | Federated identity management (FIM): Challenges and opportunities | |
Alaca et al. | Comparative analysis and framework evaluating web single sign-on systems | |
JP2001186122A (ja) | 認証システム及び認証方法 | |
CN114338242B (zh) | 一种基于区块链技术的跨域单点登录访问方法及系统 | |
WO2017210914A1 (zh) | 传输信息的方法和装置 | |
CN114154125A (zh) | 云计算环境下区块链无证书的身份认证方案 | |
Liou et al. | T-auth: A novel authentication mechanism for the IoT based on smart contracts and PUFs | |
CN117354032A (zh) | 一种基于代码服务器的多重认证方法 | |
KR102118556B1 (ko) | 프라이빗 블록체인 기반 개인정보 관리 서비스 제공 방법 | |
Binu et al. | A mobile based remote user authentication scheme without verifier table for cloud based services | |
Oktian et al. | Twochain: Leveraging blockchain and smart contract for two factor authentication | |
CN115051848B (zh) | 一种基于区块链的身份认证方法 | |
Goyal | Application of a distributed security method to end-2-end services security in independent heterogeneous cloud computing environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |