CN112241548A - 基于区块链的用户认证和授权以及进行认证和授权方法 - Google Patents

基于区块链的用户认证和授权以及进行认证和授权方法 Download PDF

Info

Publication number
CN112241548A
CN112241548A CN201910651146.5A CN201910651146A CN112241548A CN 112241548 A CN112241548 A CN 112241548A CN 201910651146 A CN201910651146 A CN 201910651146A CN 112241548 A CN112241548 A CN 112241548A
Authority
CN
China
Prior art keywords
user
server
information
authentication
authorization
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.)
Pending
Application number
CN201910651146.5A
Other languages
English (en)
Inventor
谈扬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen RingleAi Technology Co ltd
Original Assignee
Shenzhen RingleAi Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen RingleAi Technology Co ltd filed Critical Shenzhen RingleAi Technology Co ltd
Priority to CN201910651146.5A priority Critical patent/CN112241548A/zh
Publication of CN112241548A publication Critical patent/CN112241548A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6272Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database by registering files or documents with a third party

Abstract

本申请公开了一种基于区块链的用户认证和授权以及进行认证和授权方法。其中,通过使用去中心化的区块链与公钥密码学学完成去中心化用户的身份认证。并且此方案的安全性依赖于公钥密码学算法ECDSA,以及底层区块链的不可篡改性。由于区块链是一个公开开放的网络,任何人都可以在任何时候进行认证,无需第三方服务商一直保持在线。此外,使用区块链作为用户文件的开放查询系统,实质的授权则通过公钥密码学的数字签名生成access_token来实现,实现了去中心化的授权服务,且用户完全掌握自己的文件的所有权。并且,此分布式认证授权方案中,用户的身份与一对唯一的ECDSA公私钥绑定,可以在所有支持ECDSA的App/web应用中使用。

Description

基于区块链的用户认证和授权以及进行认证和授权方法
技术领域
本申请涉及认证授权领域,特别是涉及一种基于区块链的用户认证和授权以及进行认证和授权方法。
背景技术
用户的认证与授权互联网安全的一个重要组成部分,从简单的用户名密码登录到Token,公钥密码学中的数字签名都被用来服务于对用户的认证与授权。认证可以用来让通信双方鉴定对方的身份,是一个真实合法的用户,而不是一个恶意用户或者黑客。而授权则是用户在访问服务器资源时,服务器决定用户是否有权限访问此资源的过程,要防止没有相应权限的用户访问此资源,授权的过程,通常伴随着用户身份的认证。
现有的认证与授权技术都是中心化的,无论是认证服务器,资源服务器,身份服务器,证书颁发机构等等。如果中心化的认证节点出现故障,被黑客攻击,或者节点管理成员作恶等,将导致相关认证授权服务不可用、用户敏感信息泄露、或者用户身份被冒充、非授权访问等等。
此外,用户的身份认证不是通用的,用户往往都有多个账户系统,须记住不同的账户名密码,比如Facebook、Google、QQ、Github以及各类网站等等,尽管很多第三方网站,应用等支持Facebook等通用社交账号系统的认证与授权,但依然避免不了用户需要管理多个认证、授权系统的问题。
针对上述的现有技术中存在的传统的授权认证方案都存在中心化且各认证机制难以统一的技术问题,目前尚未提出有效的解决方案。
发明内容
本公开的实施例提供了一种基于区块链的用户认证和授权以及进行认证和授权方法,以至少解决现有技术中存在的传统的授权认证方案都存在中心化且各认证机制难以统一的技术问题。
根据本公开实施例的一个方面,提供了一种基于区块链的用户认证和授权方法,包括:服务器接收终端设备发送登录请求,其中登录请求用于指示用户请求登录服务器的服务;服务器响应于登录请求,对用户的身份进行相应的身份认证操作;服务器在确认用户完成身份认证操作的情况下,授权用户登录服务;服务器在需要获取与用户相关的信息的情况下,向区块链系统查询信息,其中信息包括用户的身份信息或数据文件;服务器接收区块链系统发送的与信息对应的链接;服务器响应于链接,将授权请求发送至终端设备,其中授权请求用于指示请求对获取信息的操作进行授权;以及服务器接收终端设备发送的授权码,并基于授权码和链接进行相应的文件访问操作,其中授权码为用户使用账户私钥对授权请求进行签名生成的。
根据本公开实施例的另一方面,还提供了一种基于区块链进行认证和授权方法,包括:终端设备向服务器发送登录请求,其中登录请求用于指示用户请求登录服务器的服务;终端设备接收服务器发送的身份认证请求,其中身份认证请求用于指示请求用户进行与身份认证相关的操作;终端设备响应于身份认证请求,执行相应的身份认证操作;终端设备接收服务器发送的授权请求,其中授权请求用于指示请求对获取与用户相关的信息的操作进行授权,其中信息包括用户的身份信息或数据文件;以及终端设备响应于授权请求,执行相应的授权操作,并将授权码发送至服务器,其中授权码为用户使用账户私钥对授权请求进行签名生成的。
根据本公开实施例的另一个方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时由处理器执行以上任意一项所述的方法。
根据本公开实施例的另一个方面,还提供了一种基于区块链的用户认证和授权装置,包括:登录请求接收模块,用于通过服务器接收终端设备发送登录请求,其中登录请求用于指示用户请求登录服务器的服务;身份认证模块,用于通过服务器响应于登录请求,对用户的身份进行相应的身份认证操作;授权模块,用于通过服务器在确认用户完成身份认证操作的情况下,授权用户登录服务;查询模块,用于通过服务器在需要获取与用户相关的信息的情况下,向区块链系统查询信息,其中信息包括用户的身份信息或数据文件;链接接收模块,用于通过服务器接收区块链系统发送的与信息对应的链接;授权请求发送模块,用于通过服务器响应于链接,将授权请求发送至终端设备,其中授权请求用于指示请求对获取信息的操作进行授权;以及文件访问模块,用于通过服务器接收终端设备发送的授权码,并基于授权码和链接进行相应的文件访问操作,其中授权码为用户使用账户私钥对授权请求进行签名生成的。
根据本公开实施例的另一个方面,还提供了一种基于区块链进行认证和授权装置,包括:登录请求发送模块,用于通过终端设备向服务器发送登录请求,其中登录请求用于指示用户请求登录服务器的服务;身份认证请求接收模块,用于通终端设备接收服务器发送的身份认证请求,其中身份认证请求用于指示请求用户进行与身份认证相关的操作;执行模块,用于通过终端设备响应于身份认证请求,执行相应的身份认证操作;授权请求接收模块,用于通过终端设备接收服务器发送的授权请求,其中授权请求用于指示请求对获取与用户相关的信息的操作进行授权,其中信息包括用户的身份信息或数据文件;以及授权码发送模块,用于通过终端设备响应于授权请求,执行相应的授权操作,并将授权码发送至服务器,其中授权码为用户使用账户私钥对授权请求进行签名生成的。
根据本公开实施例的另一个方面,还提供了一种基于区块链的用户认证和授权装置,包括:第一处理器;以及第一存储器,与第一处理器连接,用于为第一处理器提供处理以下处理步骤的指令:服务器接收终端设备发送登录请求,其中登录请求用于指示用户请求登录服务器的服务;服务器响应于登录请求,对用户的身份进行相应的身份认证操作;服务器在确认用户完成身份认证操作的情况下,授权用户登录服务;服务器在需要获取与用户相关的信息的情况下,向区块链系统查询信息,其中信息包括用户的身份信息或数据文件;服务器接收区块链系统发送的与信息对应的链接;服务器响应于链接,将授权请求发送至终端设备,其中授权请求用于指示请求对获取信息的操作进行授权;以及服务器接收终端设备发送的授权码,并基于授权码和链接进行相应的文件访问操作,其中授权码为用户使用账户私钥对授权请求进行签名生成的。
根据本公开实施例的另一个方面,还提供了一种基于区块链进行认证和授权装置,包括:第二处理器;以及第二存储器,与第二处理连接,用于为第二处理器提供处理以下处理步骤的指令:终端设备向服务器发送登录请求,其中登录请求用于指示用户请求登录服务器的服务;终端设备接收服务器发送的身份认证请求,其中身份认证请求用于指示请求用户进行与身份认证相关的操作;终端设备响应于身份认证请求,执行相应的身份认证操作;终端设备接收服务器发送的授权请求,其中授权请求用于指示请求对获取与用户相关的信息的操作进行授权,其中信息包括用户的身份信息或数据文件;以及终端设备响应于授权请求,执行相应的授权操作,并将授权码发送至服务器,其中授权码为用户使用账户私钥对授权请求进行签名生成的。
在本公开实施例中,通过使用去中心化的区块链与公钥密码学学完成去中心化用户的身份认证。解决了传统认证方案需要有一个可信任的认证中心的问题,如CA证书中心,Google,Facebook,QQ等服务商。此外,传统认证的安全性依赖于认证中心的安全性,而此方案的安全性依赖于公钥密码学算法ECDSA,以及底层区块链的不可篡改性。最后,区块链是一个公开开放的网络,任何人都可以在任何时候进行认证,无需第三方服务商一直保持在线。此外,使用区块链作为用户文件的开放查询系统,实质的授权则通过公钥密码学的数字签名生成access_token来实现,实现了去中心化的授权服务,且用户完全掌握自己的文件的所有权。并且,此分布式认证授权方案中,用户的身份与一对唯一的ECDSA公私钥绑定,可以在所有支持ECDSA的App/web应用中使用。进而解决了现有技术中存在的传统的授权认证方案都存在中心化且各认证机制难以统一的技术问题的技术问题。
附图说明
此处所说明的附图用来提供对本公开的进一步理解,构成本申请的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
图1是用于实现根据本公开实施例所述的方法的【计算机终端(或移动设备)】的硬件结构框图;
图2是根据本公开实施例1所述的基于区块链的用户认证和授权以及进行认证和授权系统的示意图;
图3是根据本公开实施例1的第一个方面所述的基于区块链的用户认证和授权方法的流程示意图;
图4是根据本公开实施例1的第二个方面所述的基于区块链进行认证和授权方法的流程示意图;
图5是根据本公开实施例2的第一个方面所述的基于区块链的用户认证和授权装置的示意图;
图6是根据本公开实施例2的第二个方面所述的基于区块链进行认证和授权装置的示意图;
图7是根据本公开实施例3的第一个方面所述的基于区块链的用户认证和授权装置的示意图;以及
图8是根据本公开实施例3的第二个方面所述的基于区块链进行认证和授权装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本公开的技术方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本实施例,提供了一种基于区块链的用户认证和授权以及进行认证和授权方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现基于区块链的用户认证和授权以及进行认证和授权方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本公开实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本公开实施例中的基于区块链的用户认证和授权以及进行认证和授权方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的基于区块链的用户认证和授权以及进行认证和授权方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图1所示的计算机设备(或移动设备)可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,
图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备(或移动设备)中的部件的类型。
图2是根据本实施例所述的基于区块链的用户认证和授权以及进行认证和授权系统的示意图。参照图2所示,该系统包括:运行有一条区块链的区块链系统、分布式文件系统(IPFS)或者其他存储介质、用户的终端设备以及服务器。
其中,区块链系统是一个去中心化的分布式账本,其能够在一个由多个节点组成的不可信的开放的网络环境中达成共识。区块链的选择,可以是目前的主流区块链,如Bitcoin,Ethereum,但需要进行一定的扩展(或者智能合约)以支持用户的认证或者授权相关的事务(transaction),也可以是自己搭建一条区块链。
分布式文件系统或者其他存储介质,都需要扩展权限检查功能。由多个节点组成的分布式存储网络,基于Kademlia-DHT的分布式文件系统,此协议主要使用IPFS星际文件系统作为P2P的分布式存储介质,用户将自己的身份信息以及数据文件加密后上传到此分布式存储网络。
用户的终端设备上运行有App/web应用,用户为App/web应用的使用者,也是个人信息文件和数据文件的资源拥有者。用户通过App/web客户端使用相应服务。并且用户的终端设备例如但不限于可以是PC,也可以是便携的手机,平板等。
服务器为App/web服务器,服务商通过此服务器与用户交互,并为用户提供相关服务。需要说明的是,系统中的区块链系统、分布式文件系统(IPFS)或者其他存储介质、用户的终端设备以及服务器均可适用上面所述的硬件结构。
在上述运行环境下,根据本实施例的第一个方面,提供了一种基于区块链的用户认证和授权方法,该方法由图2中所示的服务器实现。图3示出了该方法的流程示意图,参考图3所示,该方法包括:
S301:服务器接收终端设备发送登录请求,其中登录请求用于指示用户请求登录服务器的服务。
具体地,当用户需要使用其他App/web服务时,用户通过终端设备向提供App/web服务的服务器发送登录请求,此时服务器接收终端设备发送登录请求。其中登录请求用于指示用户请求登录服务器的服务。
S302:服务器响应于登录请求,对用户的身份进行相应的身份认证操作。
在一些实施例中,可以通过以下方式对用户的身份进行相应的身份认证操作:
服务器响应于登录请求,发送身份认证请求至终端设备,其中身份认证请求用于指示请求用户进行与身份认证相关的操作;
服务器接收终端设备发送的认证信息,其中认证信息包括用户的账号名、与账户私钥对应的账户公钥以及数字签名,其中数字签名为用户使用账户私钥对账号名、服务器账号名以及时间戳进行签名生成的;以及
服务器根据认证信息,对用户的身份进行相应的身份认证操作。
其中,在一示例中,服务器根据认证信息,对用户的身份进行相应的身份认证操作的操作,包括:
服务器向区块链系统查询账号名与账户公钥之间是否存在绑定关系;以及服务器在查询到账号名与账户公钥之间存在绑定关系的情况下,检验数字签名是否合法。
在另一示例中,服务器根据认证信息,对用户的身份进行相应的身份认证操作的操作,包括:
服务器检验数字签名是否合法;以及
服务器在检验数字签名合法的情况下,向区块链系统查询账号名与账户公钥之间是否存在绑定关系。
具体地,App/web服务器收到用户的认证信息后,向区块链查询认证信息中的账号名(UserID)和账户公钥(PK),看看是否存在以及具有绑定关系。存在且具有绑定关系的话,到下一步,否则认证失败。然后,App/web服务器通过账户公钥(PK)检验账号名(UserID)的数字签名Signature是否合法。如果合法,则认证通过,否则认证失败。
此外,App/web服务器收到用户的认证信息后,还可以先通过PK检验UserID的数字签名Signature是否合法。如果合法,则向区块链查询认证信息中的UserID和PK,看看是否存在以及具有绑定关系。如果存着绑定关系,则认证通过,否则认证失败。
S303:服务器在确认用户完成身份认证操作的情况下,授权用户登录服务。
在一示例中,服务器在检验数字签名合法的情况下,确认用户完成身份认证操作,并授权用户登录服务。
S304:服务器在需要获取与用户相关的信息的情况下,向区块链系统查询信息,其中信息包括用户的身份信息或数据文件。
在一示例中,服务器在需要获取与用户相关的信息的情况下,向区块链系统查询信息的操作,包括:服务器基于账号名或者账户公钥,向区块链系统查询信息。
具体地,提供服务的App/web服务器希望获取用户的身份信息或者数据文件,通过用户的UserID或者PK向区块链查询。
S305:服务器接收区块链系统发送的与信息对应的链接。
具体地,区块链系统返回对应用户的个人信息或者数据文件的链接。
S306:服务器响应于链接,将授权请求发送至终端设备,其中授权请求用于指示请求对获取信息的操作进行授权。
具体地,App/web服务器希望通过此链接进一步访问用户的个人信息或者数据文件,向用户的终端设备发送授权请求。其中,授权请求通常会带上文件访问链接URL以及服务ID等,按照应用需求具体定义。
S307:服务器接收终端设备发送的授权码,并基于授权码和链接进行相应的文件访问操作,其中授权码为用户使用账户私钥对授权请求进行签名生成的。
在一示例中,服务器基于授权码和链接进行相应的文件访问操作的操作,包括:
服务器根据链接,发送授权码以及请求获取信息的获取请求至分布式文件系统;
服务器接收分布式文件系统发送的加密后的信息;
服务器向终端设备发送获取请求,其中获取请求用于指示请求获取用于对加密后的信息进行解密的解密密钥;
服务器接收终端设备发送的解密密钥;
服务器利用解密密钥,对加密后的信息进行解密,得到信息。
具体地,App/web服务器通过链接以及access_token,向IPFS分布式存储网络请求文件。然后,IPFS分布式存储网络的节点对此请求所带的access_token进行合法性验证,确认签名确实来自用户。如果合法,则返回加密后的个人信息/数据文件给App/web服务器,否则,拒绝文件请求。
进一步地,App/web服务器在获取用户的加密文件后,向用户请求文件的解密秘钥,用户通过加密通道(https等)向App/web服务器发送解密秘钥。其中加密通道除了https之外,其他双方建立的安全的加密通道都可以,如signal,whatsapp等app用户之间通信使用的加密通道。
最后,App/web服务器通过解密秘钥对文件进行解密,获取文件,完成文件的授权过程。
此外,需要特别说明的是,App/web服务器向用户或者IPFS网络发送认证授权或者文件下载请求时,也需要带上AppID以及账户私钥对此请求的签名,以供用户或者IPFS网络节点验证其合法性,App/web服务器的账户公钥和AppID也需要通过一笔认证交易上传到区块链。
正如前面背景技术中所述的,现有的认证与授权技术都是中心化的,无论是认证服务器,资源服务器,身份服务器,证书颁发机构等等。如果中心化的认证节点出现故障,被黑客攻击,或者节点管理成员作恶等,将导致相关认证授权服务不可用、用户敏感信息泄露、或者用户身份被冒充、非授权访问等等。此外,用户的身份认证不是通用的,用户往往都有多个账户系统,须记住不同的账户名密码,比如Facebook、Google、QQ、Github以及各类网站等等,尽管很多第三方网站,应用等支持Facebook等通用社交账号系统的认证与授权,但依然避免不了用户需要管理多个认证、授权系统的问题。
针对上述背景技术中存在的问题,结合图2所示,本实施例通过使用去中心化的区块链与公钥密码学学完成去中心化用户的身份认证。解决了传统认证方案需要有一个可信任的认证中心的问题,如CA证书中心,Google,Facebook,QQ等服务商。此外,传统认证的安全性依赖于认证中心的安全性,而此方案的安全性依赖于公钥密码学算法ECDSA,以及底层区块链的不可篡改性。最后,区块链是一个公开开放的网络,任何人都可以在任何时候进行认证,无需第三方服务商一直保持在线。
此外,根据本实施例的第二个方面,提供了一种基于区块链进行认证和授权方法,该方法由图2中所示的终端设备实现。图4示出了该方法的流程示意图,参考图4所示,该方法包括:
S401:终端设备向服务器发送登录请求,其中登录请求用于指示用户请求登录服务器的服务。
在一示例中,终端设备向服务器发送登录请求的操作之前,还包括:
终端设备向区块链系统或服务器获取账户公钥与账户私钥,并设置账号名;
终端设备基于账号名以及账户公钥,向区块链系统提交与身份认证相关的事务,其中与身份认证相关的事务包括将账号名与账户公钥进行绑定;或
终端设备基于账号名以及账户公钥,向服务器提交与身份认证相关的事务,由服务器将与身份认证相关的事务发送至区块链系统。
具体地,用户在用户的终端设备上通过区块链客户端,或者其他支持此区块链基本操作的App/web应用生成一对随机的ECDSA的账户公钥(PK)与账户私钥(SK),并设置自己的账号名(UserID),作为一个统一的身份标识,如Mike001。此外,除了ECDSA(如比特币使用的secp256k1,门罗ED25519都属于ECDSA)之外,其他任何达到安全标准的公钥密码学算法也可以,如RSA,HCash使用了格密码中的Bliss,选择的公钥算法尽量满足安全,高效,占用存储小的要求。
进一步地,用户通过区块链客户端提交与身份认证相关的transaction,如将唯一的PK与UserID绑定(后续还可以进行PK与UserID的解绑或者绑定关系的更新);除了区块链客户端之外,用户还可以通过其他支持此区块链基本操作App/web客户端提交认证相关的transaction,transaction发送到App/web服务器,App/web服务器再将其转发到区块链网络。
S402:终端设备接收服务器发送的身份认证请求,其中身份认证请求用于指示请求用户进行与身份认证相关的操作。
S403:终端设备响应于身份认证请求,执行相应的身份认证操作。
在一示例中,终端设备响应于身份认证请求,执行相应的身份认证操作的操作,包括:
终端设备响应于用户输入的签名指令,使用账户私钥对用户的账号名、服务器账号名以及时间戳进行签名,生成数字签名;以及
终端设备向服务器发送与身份认证相关的认证信息,其中认证信息包括账号名、与账户私钥对应的账户公钥以及数字签名。
具体地,用户收到App/web服务器发送的认证请求之后,需要生成认证信息。生成认证信息之前,用户需要将身份相关的账户公私钥导入新的App/web,同时使用账户私钥签名UserID以及其他认证相关的信息(可以是App/web服务ID,时间戳,nonce等),生成UserID认证的数字签名Signature。用户将UserID,PK以及Signature作为身份的认证信息发送给App/web服务器。
Signature=SKsign(UserID,服务ID,timestamp,Nonce)
其中,Signature的生成中的各参数字段组成以及参数顺序本示例只是举个例子,可以根据具体的需求重新定义。
S404:终端设备接收服务器发送的授权请求,其中授权请求用于指示请求对获取与用户相关的信息的操作进行授权,其中信息包括用户的身份信息或数据文件。
S405:终端设备响应于授权请求,执行相应的授权操作,并将授权码发送至服务器,其中授权码为用户使用账户私钥对授权请求进行签名生成的。
具体地,用户收到此授权请求,在App/web端对此授权请求进行签名,进一步生成授权码access_token发送给App/web服务器。
Access_token=SKsign(FileURL,UserID,服务ID,timestamp,Nonce)
其中,Access_token的生成中的各参数字段组成以及参数顺序本示例只是举个例子,可以根据具体的需求重新定义。
在一示例中,终端设备响应于授权请求,将授权码发送至服务器的操作之前,还包括:
终端设备接收用户输入的信息;
终端设备使用账户加密密钥对信息进行加密;
终端设备将加密后的信息发送至分布式文件系统;
终端设备接收分布式文件系统发送的与信息对应的链接;以及
终端设备向区块链系统提交与信息相关的事务,其中与信息相关的事务包括将链接与账号名和账户公钥进行绑定。
具体地,如果App/web服务器在后续提供服务时,需要获取用户的个人信息或者数据文件(如论坛需要获取个人头像),那么用户加密后,上传自己的身份或者数据文件上传到分布式文件系统IPFS。其中,除了IPFS分布式文件系统之外,也可以是其他类型的分布式文件存储系统,或者传统云存储介质DropBox,百度云等。其中身份信息这种较小的文件还可以直接附加到认证交易中的附加数据字段(例如比特币的op_return字段可以携带附加数据)。
此外,加密的算法符合安全标准的都可以,但一般使用高效的对称加密算法AES。
在另一示例中,终端设备向区块链系统提交与信息相关的事务的操作,包括:终端设备在与信息相关的事务中附上信息的基本描述,其中基本描述用于指示链接为用户的信息的链接。
具体地,用户获取文件的IPFS链接后,通过App/web客户端或者区块链客户端,提交一笔文件相关的transaction,将链接与用户的UserID和PK绑定,并在transaction中附上文件的基本描述,如在比特币op_return字段中附上personal_info_file表示这是用户的个人身份信息链接。
在另一示例中,终端设备执行相应的授权操作的操作,包括:
终端设备接收服务器发送的获取请求,其中获取请求用于指示请求获取用于对加密后的信息进行解密的解密密钥;
终端设备响应于获取请求,通过加密通道将解密密钥发送至服务器。
由于传统的授权方案则需要中心化的授权服务器,相应的文件也存储在第三方服务商中,用户并没有自己文件的绝对管理权限。以及传统的授权方案则需要中心化的授权服务器,相应的文件也存储在第三方服务商中,用户并没有自己文件的绝对管理权限。此外,传统的身份系统,则是各个系统各自维护一套独立地身份体系。
从而,通过这种方式,本实施例的第二个方面使用区块链作为用户文件的开放查询系统,实质的授权则通过公钥密码学的数字签名生成access_token来实现,实现了去中心化的授权服务,且用户完全掌握自己的文件的所有权。同时,此分布式认证授权方案中,用户的身份与一对唯一的ECDSA公私钥绑定,可以在所有支持ECDSA的App/web应用中使用。
此外,参照图2所示,基于区块链的用户认证和授权以及进行认证和授权的具体流程如下所示:
1.用户在用户的设备上通过区块链客户端,或者其他支持此区块链基本操作的App/web应用生成一对随机的ECDSA的PK/SK,并设置自己的UserID,作为一个统一的身份标识,如Mike001。
1.1除了ECDSA(如比特币使用的secp256k1,门罗ED25519都属于ECDSA)之外,其他任何达到安全标准的公钥密码学算法也可以,如RSA,HCash使用了格密码中的Bliss,选择的公钥算法尽量满足安全,高效,占用存储小的要求。
2.用户通过区块链客户端提交与身份认证相关的transaction,如将唯一的PK与UserID绑定(后续还可以进行PK与UserID的解绑或者绑定关系的更新);除了区块链客户端之外,用户还可以通过其他支持此区块链基本操作App/web客户端提交认证相关的transaction,transaction发送到App/web服务器,App/web服务器再将其转发到区块链网络。
3.当用户需要使用其他App/web服务时,他请求登录此服务,App/web服务器则向用户发送身份认证请求。
4.用户收到App/web服务器发送的认证请求之后,需要生成认证信息。生成认证信息之前,用户需要将身份相关的公私钥导入新的App/web,同时使用私钥签名UserID以及其他认证相关的信息(可以是App/web服务ID,时间戳,nonce等),生成UserID认证的数字签名Signature。用户将UserID,PK以及Signature作为身份的认证信息发送给App/web服务器。
Signature=SKsign(UserID,服务ID,timestamp,Nonce)
其中,Signature的生成中的各参数字段组成以及参数顺序本实施例只是举个例子,可以根据具体的需求重新定义。
5.App/web服务器收到用户的认证信息后,向区块链查询认证信息中的UserID和PK,看看是否存在以及具有绑定关系。存在且具有绑定关系的话,到下一步,否则认证失败。
6.App/web服务器通过PK检验UserID的数字签名Signature是否合法。如果合法,则认证通过,否则认证失败。
7.如果App/web服务器在后续提供服务时,需要获取用户的个人信息或者数据文件(如论坛需要获取个人头像),那么用户加密后,上传自己的身份或者数据文件上传到分布式文件系统IPFS。
7.1除了IPFS分布式文件系统之外,也可以是其他类型的分布式文件存储系统,或者传统云存储介质DropBox,百度云等。其中身份信息这种较小的文件还可以直接附加到认证交易中的附加数据字段(例如比特币的op_return字段可以携带附加数据)。
7.2加密的算法符合安全标准的都可以,但一般使用高效的对称加密算法AES。
其中,6、7步骤顺序可以互换。
8.IPFS分布式文件系统返回用户上传文件的IPFS链接。
9.用户获取文件的IPFS链接后,通过App/web或者区块链客户端,提交一笔文件相关的transaction,将文件链接与用户的UserID和PK绑定,并在transaction中附上文件的基本描述,如在比特币op_return字段中附上personal_info_file表示这是用户的个人身份信息文件链接。
10.提供服务的App/web服务器希望获取用户的身份信息或者数据文件,通过用户的UserID或者PK向区块链查询。
11.区块链返回对应用户的个人信息或者数据文件链接。
12.App/web服务器希望通过此文件链接进一步访问用户的个人信息或者数据文件,向用户发送授权请求。
其中,请求通常会带上文件访问链接URL,服务ID等,按照应用需求具体定义。
13.用户收到此授权请求,在App/web端对此授权请求进行签名,进一步生成授权码access_token发送给App/web服务器。
其中,Access_token=SKsign(FileURL,UserID,服务ID,timestamp,Nonce)
其中,Access_token的生成中的各参数字段组成以及参数顺序本专利只是举个例子,可以根据具体的需求重新定义。
14.App/web服务器通过文件链接以及access_token,向IPFS分布式存储网络请求文件。
15.IPFS分布式存储网络的节点对此请求所带的access_token进行合法性验证,确认签名确实来自用户。如果合法,则返回加密后的个人信息/数据文件给App/web服务器,否则,拒绝文件请求。
16.App/web服务器在获取用户的加密文件后,向用户请求文件的解密秘钥,用户通过加密通道(https等)向App/web服务器发送解密秘钥。
其中,加密通道除了https之外,其他双方建立的安全的加密通道都可以,如signal,whatsapp等app用户之间通信使用的加密通道。
17.App/web服务器通过解密秘钥对文件进行解密,获取文件,完成文件的授权过程。
此外,App/web服务器向用户或者IPFS网络发送认证授权或者文件下载请求时,也需要带上AppID以及私钥对此请求的签名,以供用户或者IPFS网络节点验证其合法性,App/web服务器的公钥和AppID也需要通过一笔认证交易上传到区块链。
此外,参考图1所示,根据本实施例的第三个方面,提供了一种存储介质104。存储介质104包括存储的程序,其中,在程序运行时由处理器执行以上任意一项所述的方法。
从而根据本实施例,通过使用去中心化的区块链与公钥密码学学完成去中心化用户的身份认证。解决了传统认证方案需要有一个可信任的认证中心的问题,如CA证书中心,Google,Facebook,QQ等服务商。此外,传统认证的安全性依赖于认证中心的安全性,而此方案的安全性依赖于公钥密码学算法ECDSA,以及底层区块链的不可篡改性。最后,区块链是一个公开开放的网络,任何人都可以在任何时候进行认证,无需第三方服务商一直保持在线。此外,使用区块链作为用户文件的开放查询系统,实质的授权则通过公钥密码学的数字签名生成access_token来实现,实现了去中心化的授权服务,且用户完全掌握自己的文件的所有权。并且,此分布式认证授权方案中,用户的身份与一对唯一的ECDSA公私钥绑定,可以在所有支持ECDSA的App/web应用中使用。进而解决了现有技术中存在的传统的授权认证方案都存在中心化且各认证机制难以统一的技术问题的技术问题。
实施例2
图5示出了根据本实施例的第一个方面所述的基于区块链的用户认证和授权装置500,该装置500与根据实施例1的第一个方面所述的方法相对应。参考图5所示,该装置500包括:登录请求接收模块510,用于通过服务器接收终端设备发送登录请求,其中登录请求用于指示用户请求登录服务器的服务;身份认证模块520,用于通过服务器响应于登录请求,对用户的身份进行相应的身份认证操作;授权模块530,用于通过服务器在确认用户完成身份认证操作的情况下,授权用户登录服务;查询模块540,用于通过服务器在需要获取与用户相关的信息的情况下,向区块链系统查询信息,其中信息包括用户的身份信息或数据文件;链接接收模块550,用于通过服务器接收区块链系统发送的与信息对应的链接;授权请求发送模块560,用于通过服务器响应于链接,将授权请求发送至终端设备,其中授权请求用于指示请求对获取信息的操作进行授权;以及文件访问模块570,用于通过服务器接收终端设备发送的授权码,并基于授权码和链接进行相应的文件访问操作,其中授权码为用户使用账户私钥对授权请求进行签名生成的。
可选地,身份认证模块520,包括:身份认证请求发送子模块,用于通过服务器响应于登录请求,发送身份认证请求至终端设备,其中身份认证请求用于指示请求用户进行与身份认证相关的操作;认证信息接收子模块,用于通过服务器接收终端设备发送的认证信息,其中认证信息包括用户的账号名、与账户私钥对应的账户公钥以及数字签名,其中数字签名为用户使用账户私钥对账号名、服务器账号名以及时间戳进行签名生成的;以及身份认证子模块,用于通过服务器根据认证信息,对用户的身份进行相应的身份认证操作。
可选地,身份认证子模块包括:第一查询单元,用于通过服务器向区块链系统查询账号名与账户公钥之间是否存在绑定关系;以及第一校验单元,用于通过服务器在查询到账号名与账户公钥之间存在绑定关系的情况下,检验数字签名是否合法。
可选地,身份认证子模块包括:第二校验单元,用于通过服务器检验数字签名是否合法;以及第二查询单元,用于通过服务器在检验数字签名合法的情况下,向区块链系统查询账号名与账户公钥之间是否存在绑定关系。
可选地,授权模块530包括:授权子模块,用于通过服务器在检验数字签名合法的情况下,确认用户完成身份认证操作,并授权用户登录服务。
可选地,查询模块540包括:查询子模块,用于通过服务器基于账号名或者账户公钥,向区块链系统查询信息。
可选地,文件访问模块570包括:授权码发送子模块,用于通过服务器根据链接,发送授权码以及请求获取信息的获取请求至分布式文件系统;信息接收子模块,用于通过服务器接收分布式文件系统发送的加密后的信息;获取请求发送子模块,用于通过服务器向终端设备发送获取请求,其中获取请求用于指示请求获取用于对加密后的信息进行解密的解密密钥;解密密钥接收子模块,用于通过服务器接收终端设备发送的解密密钥;解密子模块,用于通过服务器利用解密密钥,对加密后的信息进行解密,得到信息。
此外,图6示出了根据本实施例的第二个方面所述的基于区块链进行认证和授权装置600,该装置600与根据实施例1的第二个方面所述的方法相对应。参考图6所示,该装置600包括:登录请求发送模块610,用于通过终端设备向服务器发送登录请求,其中登录请求用于指示用户请求登录服务器的服务;身份认证请求接收模块620,用于通终端设备接收服务器发送的身份认证请求,其中身份认证请求用于指示请求用户进行与身份认证相关的操作;执行模块630,用于通过终端设备响应于身份认证请求,执行相应的身份认证操作;授权请求接收模块640,用于通过终端设备接收服务器发送的授权请求,其中授权请求用于指示请求对获取与用户相关的信息的操作进行授权,其中信息包括用户的身份信息或数据文件;以及授权码发送模块650,用于通过终端设备响应于授权请求,执行相应的授权操作,并将授权码发送至服务器,其中授权码为用户使用账户私钥对授权请求进行签名生成的。
可选地,执行模块630包括:签名子模块,用于通过终端设备响应于用户输入的签名指令,使用账户私钥对用户的账号名、服务器账号名以及时间戳进行签名,生成数字签名;以及认证信息发送子模块,用于通过终端设备向服务器发送与身份认证相关的认证信息,其中认证信息包括账号名、与账户私钥对应的账户公钥以及数字签名。
可选地,还包括:信息接收模块,用于在授权码发送模块通过终端设备响应于授权请求,将授权码发送至服务器的操作之前,通过终端设备接收用户输入的信息;加密模块,用于通过终端设备使用账户加密密钥对信息进行加密;信息发送模块,用于终端设备将加密后的信息发送至分布式文件系统;链接接收模块,用于通过终端设备接收分布式文件系统发送的与信息对应的链接;以及事务提交模块,用于通过终端设备向区块链系统提交与信息相关的事务,其中与信息相关的事务包括将链接与账号名和账户公钥进行绑定。
可选地,事务提交模块包括:基本描述添加子模块,用于通过终端设备在与信息相关的事务中附上信息的基本描述,其中基本描述用于指示链接为用户的信息的链接。
可选地,授权码发送模块650包括:获取请求接收子模块,用于通过终端设备接收服务器发送的获取请求,其中获取请求用于指示请求获取用于对加密后的信息进行解密的解密密钥;解密密钥发送子模块,用于通过终端设备响应于获取请求,通过加密通道将解密密钥发送至服务器。
可选地,还包括:账户公私钥对生成模块,用于在登录请求发送模块通过终端设备向服务器发送登录请求的操作之前,通过终端设备在本地生成安全要求级别的账户公私钥对,并设置账号名;第一与身份认证相关的事务提交模块,用于通过终端设备基于账号名以及账户公钥,向区块链系统提交与身份认证相关的事务,其中与身份认证相关的事务包括将账号名与账户公钥进行绑定;或第二与身份认证相关的事务提交模块,用于通过终端设备基于账号名以及账户公钥,向服务器提交与身份认证相关的事务,由服务器将与身份认证相关的事务发送至区块链系统。
从而根据本实施例,通过使用去中心化的区块链与公钥密码学学完成去中心化用户的身份认证。解决了传统认证方案需要有一个可信任的认证中心的问题,如CA证书中心,Google,Facebook,QQ等服务商。此外,传统认证的安全性依赖于认证中心的安全性,而此方案的安全性依赖于公钥密码学算法ECDSA,以及底层区块链的不可篡改性。最后,区块链是一个公开开放的网络,任何人都可以在任何时候进行认证,无需第三方服务商一直保持在线。此外,使用区块链作为用户文件的开放查询系统,实质的授权则通过公钥密码学的数字签名生成access_token来实现,实现了去中心化的授权服务,且用户完全掌握自己的文件的所有权。并且,此分布式认证授权方案中,用户的身份与一对唯一的ECDSA公私钥绑定,可以在所有支持ECDSA的App/web应用中使用。进而解决了现有技术中存在的传统的授权认证方案都存在中心化且各认证机制难以统一的技术问题的技术问题。
实施例3
图7示出了根据本实施例的第一个方面所述的基于区块链的用户认证和授权装置700,该装置700与根据实施例1的第一个方面所述的方法相对应。参考图7所示,该装置700包括:第一处理器710;以及第一存储器720,与第一处理器710连接,用于为第一处理器710提供处理以下处理步骤的指令:服务器接收终端设备发送登录请求,其中登录请求用于指示用户请求登录服务器的服务;服务器响应于登录请求,对用户的身份进行相应的身份认证操作;服务器在确认用户完成身份认证操作的情况下,授权用户登录服务;服务器在需要获取与用户相关的信息的情况下,向区块链系统查询信息,其中信息包括用户的身份信息或数据文件;服务器接收区块链系统发送的与信息对应的链接;服务器响应于链接,将授权请求发送至终端设备,其中授权请求用于指示请求对获取信息的操作进行授权;以及服务器接收终端设备发送的授权码,并基于授权码和链接进行相应的文件访问操作,其中授权码为用户使用账户私钥对授权请求进行签名生成的。
可选地,服务器响应于登录请求,对用户的身份进行相应的身份认证操作的操作,包括:服务器响应于登录请求,发送身份认证请求至终端设备,其中身份认证请求用于指示请求用户进行与身份认证相关的操作;服务器接收终端设备发送的认证信息,其中认证信息包括用户的账号名、与账户私钥对应的账户公钥以及数字签名,其中数字签名为用户使用账户私钥对账号名、服务器账号名以及时间戳进行签名生成的;以及服务器根据认证信息,对用户的身份进行相应的身份认证操作。
可选地,服务器根据认证信息,对用户的身份进行相应的身份认证操作的操作,包括:服务器向区块链系统查询账号名与账户公钥之间是否存在绑定关系;以及服务器在查询到账号名与账户公钥之间存在绑定关系的情况下,检验数字签名是否合法。
可选地,服务器根据认证信息,对用户的身份进行相应的身份认证操作的操作,包括:服务器检验数字签名是否合法;以及服务器在检验数字签名合法的情况下,向区块链系统查询账号名与账户公钥之间是否存在绑定关系。
可选地,服务器在确认用户完成身份认证操作的情况下,授权用户登录服务的操作,包括:服务器在检验数字签名合法的情况下,确认用户完成身份认证操作,并授权用户登录服务。
可选地,服务器在需要获取与用户相关的信息的情况下,向区块链系统查询信息的操作,包括:服务器基于账号名或者账户公钥,向区块链系统查询信息。
可选地,服务器基于授权码和链接进行相应的文件访问操作的操作,包括:服务器根据链接,发送授权码以及请求获取信息的获取请求至分布式文件系统;服务器接收分布式文件系统发送的加密后的信息;服务器向终端设备发送获取请求,其中获取请求用于指示请求获取用于对加密后的信息进行解密的解密密钥;服务器接收终端设备发送的解密密钥;服务器利用解密密钥,对加密后的信息进行解密,得到信息。
此外,图8示出了根据本实施例的第二个方面所述的基于区块链进行认证和授权装置800,该装置800与根据实施例1的第二个方面所述的方法相对应。参考图8所示,该装置800包括:第二处理器810;以及第二存储器820,与第二处理器810连接,用于为第二处理器810提供处理以下处理步骤的指令:终端设备向服务器发送登录请求,其中登录请求用于指示用户请求登录服务器的服务;终端设备接收服务器发送的身份认证请求,其中身份认证请求用于指示请求用户进行与身份认证相关的操作;终端设备响应于身份认证请求,执行相应的身份认证操作;终端设备接收服务器发送的授权请求,其中授权请求用于指示请求对获取与用户相关的信息的操作进行授权,其中信息包括用户的身份信息或数据文件;以及终端设备响应于授权请求,执行相应的授权操作,并将授权码发送至服务器,其中授权码为用户使用账户私钥对授权请求进行签名生成的。
可选地,终端设备响应于身份认证请求,执行相应的身份认证操作的操作,包括:终端设备响应于用户输入的签名指令,使用账户私钥对用户的账号名、服务器账号名以及时间戳进行签名,生成数字签名;以及终端设备向服务器发送与身份认证相关的认证信息,其中认证信息包括账号名、与账户私钥对应的账户公钥以及数字签名。
可选地,第二存储器820还用于为第二处理器810提供处理以下处理步骤的指令:终端设备响应于授权请求,将授权码发送至服务器的操作之前,终端设备接收用户输入的信息;终端设备使用账户加密密钥对信息进行加密;终端设备将加密后的信息发送至分布式文件系统;终端设备接收分布式文件系统发送的与信息对应的链接;以及终端设备向区块链系统提交与信息相关的事务,其中与信息相关的事务包括将链接与账号名和账户公钥进行绑定。
可选地,终端设备向区块链系统提交与信息相关的事务的操作,包括:终端设备在与信息相关的事务中附上信息的基本描述,其中基本描述用于指示链接为用户的信息的链接。
可选地,终端设备执行相应的授权操作的操作,包括:终端设备接收服务器发送的获取请求,其中获取请求用于指示请求获取用于对加密后的信息进行解密的解密密钥;终端设备响应于获取请求,通过加密通道将解密密钥发送至服务器。
可选地,第二存储器820还用于为第二处理器810提供处理以下处理步骤的指令:终端设备向服务器发送登录请求的操作之前,终端设备在本地生成安全要求级别的账户公私钥对,并设置账号名;终端设备基于账号名以及账户公钥,向区块链系统提交与身份认证相关的事务,其中与身份认证相关的事务包括将账号名与账户公钥进行绑定;或终端设备基于账号名以及账户公钥,向服务器提交与身份认证相关的事务,由服务器将与身份认证相关的事务发送至区块链系统。
从而根据本实施例,通过使用去中心化的区块链与公钥密码学学完成去中心化用户的身份认证。解决了传统认证方案需要有一个可信任的认证中心的问题,如CA证书中心,Google,Facebook,QQ等服务商。此外,传统认证的安全性依赖于认证中心的安全性,而此方案的安全性依赖于公钥密码学算法ECDSA,以及底层区块链的不可篡改性。最后,区块链是一个公开开放的网络,任何人都可以在任何时候进行认证,无需第三方服务商一直保持在线。此外,使用区块链作为用户文件的开放查询系统,实质的授权则通过公钥密码学的数字签名生成access_token来实现,实现了去中心化的授权服务,且用户完全掌握自己的文件的所有权。并且,此分布式认证授权方案中,用户的身份与一对唯一的ECDSA公私钥绑定,可以在所有支持ECDSA的App/web应用中使用。进而解决了现有技术中存在的传统的授权认证方案都存在中心化且各认证机制难以统一的技术问题的技术问题。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (13)

1.一种基于区块链的用户认证和授权方法,其特征在于,包括:
服务器接收终端设备发送登录请求,其中所述登录请求用于指示所述用户请求登录所述服务器的服务;
所述服务器响应于所述登录请求,对所述用户的身份进行相应的身份认证操作;
所述服务器在确认所述用户完成身份认证操作的情况下,授权所述用户登录所述服务;
所述服务器在需要获取与所述用户相关的信息的情况下,向区块链系统查询所述信息,其中所述信息包括所述用户的身份信息或数据文件;
所述服务器接收所述区块链系统发送的与所述信息对应的链接;
所述服务器响应于所述链接,将授权请求发送至所述终端设备,其中所述授权请求用于指示请求对获取所述信息的操作进行授权;以及
所述服务器接收所述终端设备发送的授权码,并基于所述授权码和所述链接进行相应的文件访问操作,其中所述授权码为所述用户使用账户私钥对所述授权请求进行签名生成的。
2.根据权利要求1所述的方法,其特征在于,所述服务器响应于所述登录请求,对所述用户的身份进行相应的身份认证操作的操作,包括:
所述服务器响应于所述登录请求,发送身份认证请求至所述终端设备,其中所述身份认证请求用于指示请求所述用户进行与身份认证相关的操作;
所述服务器接收所述终端设备发送的认证信息,其中所述认证信息包括用户的账号名、与所述账户私钥对应的账户公钥以及数字签名,其中所述数字签名为所述用户使用所述账户私钥对所述账号名、服务器账号名以及时间戳进行签名生成的;以及
所述服务器根据所述认证信息,对所述用户的身份进行相应的身份认证操作。
3.根据权利要求2所述的方法,其特征在于,所述服务器根据所述认证信息,对所述用户的身份进行相应的身份认证操作的操作,包括:
所述服务器向所述区块链系统查询所述账号名与所述账户公钥之间是否存在绑定关系;以及
所述服务器在查询到所述账号名与所述账户公钥之间存在绑定关系的情况下,检验所述数字签名是否合法。
4.根据权利要求2所述的方法,其特征在于,所述服务器根据所述认证信息,对所述用户的身份进行相应的身份认证操作的操作,包括:
所述服务器检验所述数字签名是否合法;以及
所述服务器在检验所述数字签名合法的情况下,向所述区块链系统查询所述账号名与所述账户公钥之间是否存在绑定关系。
5.根据权利要求3所述的方法,其特征在于,所述服务器在确认所述用户完成身份认证操作的情况下,授权所述用户登录所述服务的操作,包括:
所述服务器在检验所述数字签名合法的情况下,确认所述用户完成身份认证操作,并授权所述用户登录所述服务。
6.根据权利要求2所述的方法,其特征在于,所述服务器在需要获取与所述用户相关的信息的情况下,向区块链系统查询所述信息的操作,包括:所述服务器基于所述账号名或者所述账户公钥,向所述区块链系统查询所述信息。
7.根据权利要求1所述的方法,其特征在于,所述服务器基于所述授权码和所述链接进行相应的文件访问操作的操作,包括:
所述服务器根据所述链接,发送所述授权码以及请求获取所述信息的获取请求至分布式文件系统;
所述服务器接收所述分布式文件系统发送的加密后的所述信息;
所述服务器向所述终端设备发送获取请求,其中所述获取请求用于指示请求获取用于对加密后的所述信息进行解密的解密密钥;
所述服务器接收所述终端设备发送的解密密钥;
所述服务器利用所述解密密钥,对加密后的所述信息进行解密,得到所述信息。
8.一种基于区块链进行认证和授权方法,其特征在于,包括:
终端设备向服务器发送登录请求,其中所述登录请求用于指示用户请求登录所述服务器的服务;
所述终端设备接收所述服务器发送的身份认证请求,其中所述身份认证请求用于指示请求所述用户进行与身份认证相关的操作;
所述终端设备响应于所述身份认证请求,执行相应的身份认证操作;
所述终端设备接收所述服务器发送的授权请求,其中所述授权请求用于指示请求对获取与所述用户相关的信息的操作进行授权,其中所述信息包括所述用户的身份信息或数据文件;以及
所述终端设备响应于所述授权请求,执行相应的授权操作,并将授权码发送至所述服务器,其中所述授权码为所述用户使用账户私钥对所述授权请求进行签名生成的。
9.根据权利要求8所述的方法,其特征在于,所述终端设备响应于所述身份认证请求,执行相应的身份认证操作的操作,包括:
所述终端设备响应于所述用户输入的签名指令,使用所述账户私钥对所述用户的账号名、服务器账号名以及时间戳进行签名,生成数字签名;以及
所述终端设备向所述服务器发送与身份认证相关的认证信息,其中所述认证信息包括所述账号名、与所述账户私钥对应的账户公钥以及所述数字签名。
10.根据权利要求9所述的方法,其特征在于,所述终端设备响应于所述授权请求,将授权码发送至所述服务器的操作之前,还包括:
所述终端设备接收所述用户输入的所述信息;
所述终端设备使用账户加密密钥对所述信息进行加密;
所述终端设备将加密后的所述信息发送至分布式文件系统;
所述终端设备接收所述分布式文件系统发送的与所述信息对应的链接;以及
所述终端设备向区块链系统提交与所述信息相关的事务,其中所述与所述信息相关的事务包括将所述链接与所述账号名和所述账户公钥进行绑定。
11.根据权利要求10所述的方法,其特征在于,所述终端设备向区块链系统提交与所述信息相关的事务的操作,包括:所述终端设备在与所述信息相关的事务中附上所述信息的基本描述,其中所述基本描述用于指示所述链接为所述用户的所述信息的链接。
12.根据权利要求8所述的方法,其特征在于,所述终端设备执行相应的授权操作的操作,包括:
所述终端设备接收所述服务器发送的获取请求,其中所述获取请求用于指示请求获取用于对加密后的所述信息进行解密的解密密钥;
所述终端设备响应于所述获取请求,通过加密通道将所述解密密钥发送至所述服务器。
13.根据权利要求9所述的方法,其特征在于,所述终端设备向服务器发送登录请求的操作之前,还包括:
所述终端设备在本地生成安全要求级别的所述账户公钥以及所述账户私钥,并设置所述账号名;
所述终端设备基于所述账号名以及所述账户公钥,向所述区块链系统提交与身份认证相关的事务,其中所述与身份认证相关的事务包括将所述账号名与所述账户公钥进行绑定;或
所述终端设备基于所述账号名以及所述账户公钥,向所述服务器提交与身份认证相关的事务,由所述服务器将所述与身份认证相关的事务发送至所述区块链系统。
CN201910651146.5A 2019-07-18 2019-07-18 基于区块链的用户认证和授权以及进行认证和授权方法 Pending CN112241548A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910651146.5A CN112241548A (zh) 2019-07-18 2019-07-18 基于区块链的用户认证和授权以及进行认证和授权方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910651146.5A CN112241548A (zh) 2019-07-18 2019-07-18 基于区块链的用户认证和授权以及进行认证和授权方法

Publications (1)

Publication Number Publication Date
CN112241548A true CN112241548A (zh) 2021-01-19

Family

ID=74167903

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910651146.5A Pending CN112241548A (zh) 2019-07-18 2019-07-18 基于区块链的用户认证和授权以及进行认证和授权方法

Country Status (1)

Country Link
CN (1) CN112241548A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115051848A (zh) * 2022-06-08 2022-09-13 西安工业大学 一种基于区块链的身份认证方法
TWI788946B (zh) * 2021-08-05 2023-01-01 財團法人聯合信用卡處理中心 區塊鏈身分識別系統及區塊鏈身分識別方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105897424A (zh) * 2016-03-14 2016-08-24 深圳奥联信息安全技术有限公司 一种增强身份认证的方法
CN106911641A (zh) * 2015-12-23 2017-06-30 索尼公司 用于授权访问的客户端装置、服务器装置和访问控制系统
CN107079036A (zh) * 2016-12-23 2017-08-18 深圳前海达闼云端智能科技有限公司 注册及授权方法、装置及系统
CN109639406A (zh) * 2018-12-24 2019-04-16 国泰君安证券股份有限公司 基于区块链和ipfs的高效信任解决方法
CN109729093A (zh) * 2019-01-17 2019-05-07 重庆邮电大学 一种基于区块链的数字版权登记技术
CN109767215A (zh) * 2018-12-29 2019-05-17 杭州趣链科技有限公司 一种在线的基于多种私钥存储方式的区块链身份认证方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106911641A (zh) * 2015-12-23 2017-06-30 索尼公司 用于授权访问的客户端装置、服务器装置和访问控制系统
CN105897424A (zh) * 2016-03-14 2016-08-24 深圳奥联信息安全技术有限公司 一种增强身份认证的方法
CN107079036A (zh) * 2016-12-23 2017-08-18 深圳前海达闼云端智能科技有限公司 注册及授权方法、装置及系统
CN109639406A (zh) * 2018-12-24 2019-04-16 国泰君安证券股份有限公司 基于区块链和ipfs的高效信任解决方法
CN109767215A (zh) * 2018-12-29 2019-05-17 杭州趣链科技有限公司 一种在线的基于多种私钥存储方式的区块链身份认证方法
CN109729093A (zh) * 2019-01-17 2019-05-07 重庆邮电大学 一种基于区块链的数字版权登记技术

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
苏雄业: "基于区块链的大数据共享模型与关键机制研究与实现", 中国优秀硕士学位论文全文数据库-信息科技辑(月刊), no. 05, pages 138 - 964 *
董贵山等: "基于区块链的身份管理认证研究", 计算机科学, vol. 45, no. 11, pages 52 - 59 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI788946B (zh) * 2021-08-05 2023-01-01 財團法人聯合信用卡處理中心 區塊鏈身分識別系統及區塊鏈身分識別方法
CN115051848A (zh) * 2022-06-08 2022-09-13 西安工业大学 一种基于区块链的身份认证方法
CN115051848B (zh) * 2022-06-08 2023-12-22 西安工业大学 一种基于区块链的身份认证方法

Similar Documents

Publication Publication Date Title
CN110770695B (zh) 物联网(iot)设备管理
US11196573B2 (en) Secure de-centralized domain name system
US10027670B2 (en) Distributed authentication
US10567370B2 (en) Certificate authority
US8532620B2 (en) Trusted mobile device based security
EP2842258B1 (en) Multi-factor certificate authority
CN110800248B (zh) 用于第一应用和第二应用之间的互相对称认证的方法
JP2020080530A (ja) データ処理方法、装置、端末及びアクセスポイントコンピュータ
US10826895B1 (en) System and method for secure authenticated user session handoff
US11363009B2 (en) System and method for providing secure cloud-based single sign-on connections using a security service provider having zero-knowledge architecture
CN114788226A (zh) 用于建立分散式计算机应用的非托管工具
KR20210095093A (ko) 탈중앙화 아이디 앱을 이용하여 인증 서비스를 제공하는 방법 및 이를 이용한 탈중앙화 아이디 인증 서버
CN113411187A (zh) 身份认证方法和系统、存储介质及处理器
CN112241548A (zh) 基于区块链的用户认证和授权以及进行认证和授权方法
Zwattendorfer et al. A federated cloud identity broker-model for enhanced privacy via proxy re-encryption
CN110771087B (zh) 私钥更新
CN110048842B (zh) 会话密钥处理方法、设备及计算机可读存储介质
KR102118556B1 (ko) 프라이빗 블록체인 기반 개인정보 관리 서비스 제공 방법
JP2024501326A (ja) アクセス制御方法、装置、ネットワーク側機器、端末及びブロックチェーンノード
CN110225011B (zh) 用户节点的认证方法、设备及计算机可读存储介质
CN113157207B (zh) 一种数据处理方法、装置及存储介质
RU2722393C2 (ru) Телекоммуникационная система для осуществления в ней защищенной передачи данных и устройство, связанное с этой системой
CN115883104A (zh) 终端设备的安全登录方法及装置、非易失性存储介质

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