CN116980163A - 基于可信执行环境的数据处理方法、装置、设备及介质 - Google Patents

基于可信执行环境的数据处理方法、装置、设备及介质 Download PDF

Info

Publication number
CN116980163A
CN116980163A CN202211488695.3A CN202211488695A CN116980163A CN 116980163 A CN116980163 A CN 116980163A CN 202211488695 A CN202211488695 A CN 202211488695A CN 116980163 A CN116980163 A CN 116980163A
Authority
CN
China
Prior art keywords
authorization
service
information
token
target client
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
CN202211488695.3A
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202211488695.3A priority Critical patent/CN116980163A/zh
Publication of CN116980163A publication Critical patent/CN116980163A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0815Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/321Cryptographic 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 a third party or a trusted authority
    • H04L9/3213Cryptographic 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 a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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 digital signatures

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)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请公开了一种基于可信执行环境的数据处理方法、装置、设备及介质,方法包括:获取目标客户端发送的远程认证请求,基于远程认证请求对可信执行环境进行远程认证,且在远程认证成功时与目标客户端建立通信连接;基于通信连接获取目标客户端发送的第一授权申请请求;基于第一授权申请请求中的授权签名信息对业务对象进行身份校验,且在身份校验成功时向目标客户端返回授权信息;接收目标客户端基于授权信息发送的令牌申请请求,将授权信息录入可信执行环境中的对象管理本地合约,通过对象管理本地合约对授权信息进行授权验证,且在授权验证成功时向目标客户端返回第一访问令牌。采用本申请,可以实现无需信任的去中心化安全身份验证服务。

Description

基于可信执行环境的数据处理方法、装置、设备及介质
技术领域
本申请涉及区块链技术领域,尤其涉及一种基于可信执行环境的数据处理方法、装置、设备及介质。
背景技术
为了实现安全可靠的资源共享,出现了许多用于提供用户身份验证的授权机制。例如,OAuth2(即Open Authorization 2.0)是目前被广泛使用的一种授权机制,允许用户(即业务对象)授权第三方应用(或网站)获取相关资源数据,而不需要将用户账号和密码提供给第三方应用或者分享用户资源数据的所有内容。
发明人在实践中发现,现有的OAuth2登录方式均指向一个中心化的对象身份管理***,例如,当用户A确认授权第三方应用(例如,应用B)访问其存储在另外的服务提供商上的有限资源数据时,用户A可以通过该服务提供商的身份验证服务器(例如,服务器C)登录应用B,随后应用B可以通过获得的授权向该服务提供商的资源服务器(例如,服务器D)申请获取相应的资源数据。可以理解,在此过程中需要用户高度信任服务提供商,即登录服务和信任源高度耦合,而由于服务提供商始终存在作恶的风险,易导致中心化身份管理出现不可信问题,从而难以确保对象身份管理***的安全性和可靠性。
发明内容
本申请实施例提供了一种基于可信执行环境的数据处理方法、装置、设备及介质,通过将可信执行环境和区块链进行结合,可以实现无需信任的去中心化安全身份验证服务,且可以提升对象身份管理***的安全性和可靠性。
本申请实施例一方面提供了一种基于可信执行环境的数据处理方法,方法由业务网络中的业务节点执行,业务节点运行在可信执行环境中,方法包括:
获取目标客户端发送的远程认证请求,基于远程认证请求对业务节点的可信执行环境进行远程认证,且在远程认证成功时,与目标客户端建立通信连接;
基于通信连接获取目标客户端发送的第一授权申请请求;第一授权申请请求中携带业务对象的授权签名信息;授权签名信息为目标客户端所访问的业务前端中的业务对象的签名信息;
基于授权签名信息对业务对象进行身份校验,且在身份校验成功时,向目标客户端返回授权信息;
接收目标客户端基于授权信息发送的令牌申请请求,将令牌申请请求中的授权信息录入可信执行环境中的对象管理本地合约,通过对象管理本地合约对授权信息进行授权验证,且在授权验证成功时,向目标客户端返回第一访问令牌;第一访问令牌用于通过对象管理本地合约从核心共识网络中的区块链上获取与业务对象相关联的业务资源数据;核心共识网络独立于业务网络。
本申请实施例一方面提供了一种基于可信执行环境的数据处理方法,方法由目标客户端执行,与目标客户端相关联的业务网络中的业务节点运行在可信执行环境中,方法包括:
向业务节点发送远程认证请求;远程认证请求用于指示业务节点对可信执行环境进行远程认证,且在远程认证成功时,与目标客户端建立通信连接;
基于通信连接向业务节点发送第一授权申请请求;第一授权申请请求中携带业务对象的授权签名信息;授权签名信息为目标客户端所访问的业务前端中的业务对象的签名信息;授权签名信息用于指示业务节点对业务对象进行身份校验,且在身份校验成功时,向目标客户端返回授权信息;
基于授权信息生成令牌申请请求,将令牌申请请求发送至业务节点,以使业务节点将令牌申请请求中的授权信息录入可信执行环境中的对象管理本地合约;对象管理本地合约用于对授权信息进行授权验证,且在授权验证成功时,用于指示业务节点向目标客户端返回第一访问令牌;第一访问令牌用于通过对象管理本地合约从核心共识网络中的区块链上获取与业务对象相关联的业务资源数据;核心共识网络独立于业务网络。
本申请实施例一方面提供了一种基于可信执行环境的数据处理装置,装置运行在业务网络中的业务节点中,业务节点运行在可信执行环境中,装置包括:
远程认证模块,用于获取目标客户端发送的远程认证请求,基于远程认证请求对业务节点的可信执行环境进行远程认证,且在远程认证成功时,与目标客户端建立通信连接;
请求获取模块,用于基于通信连接获取目标客户端发送的第一授权申请请求;第一授权申请请求中携带业务对象的授权签名信息;授权签名信息为目标客户端所访问的业务前端中的业务对象的签名信息;
身份校验模块,用于基于授权签名信息对业务对象进行身份校验,且在身份校验成功时,向目标客户端返回授权信息;
令牌发放模块,用于接收目标客户端基于授权信息发送的令牌申请请求,将令牌申请请求中的授权信息录入可信执行环境中的对象管理本地合约,通过对象管理本地合约对授权信息进行授权验证,且在授权验证成功时,向目标客户端返回第一访问令牌;第一访问令牌用于通过对象管理本地合约从核心共识网络中的区块链上获取与业务对象相关联的业务资源数据;核心共识网络独立于业务网络。
其中,核心共识网络中的区块链上部署有用于管理可信执行环境的可信环境管理合约;
远程认证模块包括:
信息获取单元,用于基于远程认证请求获取与可信执行环境相关联的待验证关键信息,通过与业务节点相关联的中继服务设备向远程认证服务器发送待验证关键信息,以使远程认证服务器基于待验证关键信息对可信执行环境进行有效性验证,且在有效性验证成功时,向中继服务设备返回认证验证报告;
度量值获取单元,用于在接收到中继服务设备基于认证验证报告返回的认证成功响应信息时,确定可信执行环境为安全环境,且获取作为安全环境的可信执行环境中所部署的可信应用的应用度量值作为本地应用度量值;通过可信执行环境中的对象管理本地合约,将从区块链上的可信环境管理合约中获取到的可信应用对应的应用度量值作为目标应用度量值;
度量值比对单元,用于将本地应用度量值与目标应用度量值进行比对,且在本地应用度量值与目标应用度量值比对一致时,确定可信执行环境远程认证成功,与目标客户端建立通信连接。
其中,第一授权申请请求中包含业务对象的授权签名信息、业务对象的对象公钥信息以及业务对象的对象身份标识;授权签名信息是在业务对象通过业务前端进行登录操作时,由与业务对象相关联的对象密钥管理工具通过对象公钥信息对应的对象私钥信息,对目标客户端发起的第二授权申请请求进行签名后所得到的;第二授权申请请求为第一授权申请请求之前的授权申请请求;对象公钥信息和对象私钥信息均由对象密钥管理工具所确定;可信执行环境中构建有对象登录凭证数据库;对象登录凭证数据库用于存储从区块链上的对象管理合约中同步来的注册对象的对象注册信息,注册对象的对象注册信息中包含注册对象的身份标识;
身份校验模块包括:
签名验证单元,用于从第一授权申请请求中获取授权签名信息和对象公钥信息,通过对象公钥信息对对象签名信息进行签名验证,得到签名验证结果;
对象查询单元,用于在签名验证结果指示签名验证成功时,通过可信执行环境中的对象管理本地合约,在注册对象的对象注册信息中查找与对象身份标识相同的身份标识,且在查找到与对象身份标识相同的身份标识时,确定业务对象为注册对象,将业务对象为注册对象时的身份校验成功结果作为身份校验结果;
授权返回单元,用于基于身份校验结果向目标客户端返回授权信息。
其中,授权返回单元包括:
第一登录配置子单元,用于在身份校验结果指示身份校验成功时,通过对象管理本地合约将业务对象的业务状态配置为业务登录状态,且基于业务登录状态为目标客户端配置第一授权有效时长和第一访问权限范围;
授权码配置子单元,用于基于第一授权有效时长和第一访问权限范围为目标客户端配置授权码,通过可信执行环境的硬件私钥信息对授权码进行签名,得到硬件签名信息;
第一授权返回子单元,用于获取硬件私钥信息对应的硬件公钥信息,对授权码、硬件签名信息以及硬件公钥信息进行数据映射,得到第一授权信息,将第一授权信息返回至目标客户端。
其中,令牌发放模块包括:
第一请求接收单元,用于通过可信执行环境中的令牌发放服务接口接收目标客户端基于第一授权信息发送的第一令牌申请请求;第一令牌申请请求是目标客户端在通过第一授权信息中的硬件公钥信息对硬件签名信息验签成功时,基于第一授权信息所确定的;
第一信息比对单元,用于将第一令牌申请请求中的第一授权信息录入可信执行环境中的对象管理本地合约,且将第一授权信息中携带的授权码作为待验证授权码;通过对象管理本地合约从待验证授权码中获取第一待验证时长和第一待验证权限范围,将待验证授权码、第一待验证时长以及第一待验证权限范围作为第一请求信息;且用于将从可信执行环境中获取到的为目标客户端配置的授权码、第一授权有效时长以及第一访问权限范围作为第一授权数据信息,将第一请求信息和第一授权数据信息进行比对;
第一令牌返回单元,用于若第一请求信息和第一授权数据信息比对一致,则确定第一授权信息授权验证成功,基于第一授权信息向目标客户端返回第一访问令牌。
其中,授权返回单元包括:
第二登录配置子单元,用于在身份校验结果指示身份校验成功时,通过对象管理本地合约将业务对象的业务状态配置为业务登录状态,且基于业务登录状态为目标客户端配置第二授权有效时长和第二访问权限范围;
第二授权返回子单元,用于基于可信执行环境的硬件公钥信息对第二授权有效时长和第二访问权限范围进行加密处理,得到第二授权信息,将第二授权信息返回至目标客户端。
其中,令牌发放模块包括:
第二请求接收单元,用于通过可信执行环境中的令牌发放服务接口接收目标客户端基于第二授权信息发送的第二令牌申请请求;
第二信息比对单元,用于将第二令牌申请请求中的第二授权信息录入可信执行环境中的对象管理本地合约,通过对象管理本地合约调用可信执行环境的硬件私钥信息对第二授权信息进行解密处理,得到第二待验证时长和第二待验证权限范围,且将解密得到的第二待验证时长和第二待验证权限范围作为第二请求信息;且用于将从可信执行环境中获取到的为目标客户端配置的第二授权有效时长和第二访问权限范围作为第二授权数据信息,将第二请求信息和第二授权数据信息进行比对;
第二令牌返回单元,用于若第二请求信息和第二授权数据信息比对一致,则确定第二授权信息授权验证成功,基于第二授权信息向目标客户端返回第一访问令牌。
其中,授权信息包含为目标客户端配置的授权有效时长和访问权限范围;第一访问令牌是在授权信息授权验证成功时,由可信执行环境中的令牌发放服务接口基于授权信息中的授权有效时长和访问权限范围所确定的访问令牌;授权有效时长用于确定第一访问令牌对应的令牌有效时长;授权有效时长大于或等于令牌有效时长;访问权限范围用于确定第一访问令牌对应的业务访问权限;业务访问权限为位于访问权限范围内的访问权限。
其中,上述装置还包括:
令牌验证模块,用于接收目标客户端基于第一访问令牌发送的业务资源访问请求,将业务资源访问请求中的第一访问令牌录入对象管理本地合约,通过对象管理本地合约对第一访问令牌进行合法性验证,得到合法性验证结果;
资源获取模块,用于在合法性验证指示第一访问令牌为合法令牌时,通过对象管理本地合约从存储在可信执行环境的资源数据中获取作为合法令牌的第一访问令牌所请求的资源数据,将获取到的资源数据作为与业务对象相关联的业务资源数据,且将业务资源数据返回至目标客户端;可信执行环境中所存储的资源数据是从区块链上同步来的与对象管理合约相关联的数据。
其中,令牌验证模块包括:
第三请求接收单元,用于通过可信执行环境中的信息读取服务接口接收目标客户端基于第一访问令牌发送的业务资源访问请求,将业务资源访问请求中的第一访问令牌录入对象管理本地合约;
令牌比对单元,用于通过对象管理本地合约,从可信执行环境中的对象登录凭证数据库中获取基于授权信息为目标客户端配置的访问令牌,将获取到的访问令牌作为目标访问令牌,且将目标访问令牌与第一访问令牌进行比对;
时长验证单元,用于若目标访问令牌与第一访问令牌比对一致,则获取第一访问令牌对应的令牌使用时长和令牌有效时长,且在令牌使用时长小于令牌有效时长时,确定第一访问令牌为合法令牌,将第一访问令牌为合法令牌时的验证结果作为合法性验证结果。
其中,业务资源访问请求中携带业务对象的对象身份标识;第一访问令牌中包含令牌有效时长和业务访问权限;
资源获取模块包括:
第一资源获取单元,用于通过可信执行环境中的信息读取服务接口调用对象管理本地合约,在可信执行环境所存储的资源数据中查找与对象身份标识相关联的资源数据,且将查找到的与对象身份标识相关联的资源数据作为对象资源数据;
第二资源获取单元,用于获取作为合法令牌的第一访问令牌中的令牌有效时长和业务访问权限,在令牌有效时长内,从对象资源数据中获取业务访问权限所指示的资源数据作为与业务对象相关联的业务资源数据,通过信息读取服务接口将业务资源数据返回至目标客户端。
其中,上述装置还包括:
令牌更新模块,用于在向目标客户端返回第一访问令牌时,向目标客户端返回用于更新第一访问令牌的更新令牌;接收目标客户端基于更新令牌发送的令牌更新请求,将令牌更新请求中的更新令牌录入对象管理本地合约,通过对象管理本地合约对更新令牌进行验证,且在验证成功时,向目标客户端返回第二访问令牌。
本申请实施例一方面提供了一种基于可信执行环境的数据处理装置,装置运行在目标客户端中,与目标客户端相关联的业务网络中的业务节点运行在可信执行环境中,装置包括:
认证请求模块,用于向业务节点发送远程认证请求;远程认证请求用于指示业务节点对可信执行环境进行远程认证,且在远程认证成功时,与目标客户端建立通信连接;
授权申请模块,用于基于通信连接向业务节点发送第一授权申请请求;第一授权申请请求中携带业务对象的授权签名信息;授权签名信息为目标客户端所访问的业务前端中的业务对象的签名信息;授权签名信息用于指示业务节点对业务对象进行身份校验,且在身份校验成功时,向目标客户端返回授权信息;
令牌申请模块,用于基于授权信息生成令牌申请请求,将令牌申请请求发送至业务节点,以使业务节点将令牌申请请求中的授权信息录入可信执行环境中的对象管理本地合约;对象管理本地合约用于对授权信息进行授权验证,且在授权验证成功时,用于指示业务节点向目标客户端返回第一访问令牌;第一访问令牌用于通过对象管理本地合约从核心共识网络中的区块链上获取与业务对象相关联的业务资源数据;核心共识网络独立于业务网络。
其中,授权申请模块包括:
第一授权申请单元,用于在目标客户端访问业务前端时,向业务前端发送第二授权申请请求;第二授权申请请求用于指示业务前端获取与业务对象相关联的对象密钥管理工具;对象密钥管理工具用于通过业务对象的对象私钥信息对第二授权申请请求进行签名,且将得到的业务对象的授权签名信息和对象私钥信息对应的对象公钥信息返回给目标客户端;对象公钥信息和对象私钥信息均由对象密钥管理工具所确定;
第二授权申请单元,用于获取业务对象的对象身份标识,基于对象身份标识、授权签名信息以及对象公钥信息生成第一授权申请请求,且基于通信连接将第一授权申请请求发送至业务节点;第一授权申请请求为第二授权申请请求之后的授权申请请求。
其中,上述装置还包括:
资源访问模块,用于基于第一访问令牌向业务节点发送业务资源访问请求;业务资源访问请求用于指示业务节点通过对象管理本地合约对业务资源访问请求中的第一访问令牌进行合法性验证,且在确定第一访问令牌为合法令牌时,通过对象管理本地合约从区块链上获取与业务对象相关联的业务资源数据;
业务执行模块,用于基于业务节点返回的业务资源数据,执行目标业务。
本申请实施例一方面提供了一种计算机设备,包括:处理器和存储器;
处理器与存储器相连,其中,存储器用于存储计算机程序,计算机程序被处理器执行时,使得该计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例提供的方法。
在本申请实施例中,业务网络中的业务节点在获取到目标客户端发送的远程认证请求时,可以基于该远程认证请求对业务节点的可信执行环境进行远程认证,进而可以在远程认证成功时与目标客户端建立通信连接;进一步地,业务节点可以基于该通信连接获取目标客户端发送的第一授权申请请求;可以理解,这里的第一授权申请请求中携带有业务对象的授权签名信息,且该授权签名信息为目标客户端所访问的业务前端中的业务对象的签名信息;随后,业务节点可以基于该授权签名信息对业务对象进行身份校验,且可以在身份校验成功时向目标客户端返回相应的授权信息;进一步地,在接收到目标客户端基于该授权信息发送的令牌申请请求时,可以将该令牌申请请求中的授权信息录入可信执行环境中的对象管理本地合约,进而可通过该对象管理本地合约对授权信息进行授权验证,且可以在授权验证成功时向目标客户端返回第一访问令牌;其中,该第一访问令牌可用于通过对象管理本地合约从核心共识网络中的区块链上获取与业务对象相关联的业务资源数据,这里的核心共识网络独立于上述业务网络。由此可见,本申请实施例提供了一种基于可信执行环境的分布式对象身份管理***用于登录服务的方案,在该对象身份管理***中,由业务网络中的业务节点执行对业务对象登录授权的验证以及令牌派发等逻辑过程,相当于将业务节点作为OAuth2中的身份验证服务器和资源服务器,从而实现了分布式的OAuth2登录服务。另外,由于该业务节点运行在可信执行环境中,且该可信执行环境可以被远程认证,因此保证了业务节点执行逻辑的可信,并可以将登录服务和信任源解耦,从而去除了中心化身份管理带来的不可信问题。此外,本申请实施例还将可信执行环境和区块链进行结合,通过可信执行环境提供安全的身份验证服务,而无需信任对应业务节点的运行者,且通过不可被篡改的区块链管理业务对象的相关信息,可以实现无需信任的去中心化安全身份验证服务,且可以提升对象身份管理***的安全性和可靠性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链网络分层结构的示意图;
图2a是本申请实施例提供的一种基于可信执行环境的数据处理场景示意图;
图2b是本申请实施例提供的一种基于可信执行环境的数据处理场景示意图;
图2c是本申请实施例提供的一种基于可信执行环境的数据处理场景示意图;
图3是本申请实施例提供的一种基于可信执行环境的数据处理方法的流程示意图;
图4是本申请实施例提供的一种远程认证的场景示意图;
图5是本申请实施例提供的一种基于可信执行环境的数据处理方法的流程示意图;
图6是本申请实施例提供的一种基于可信执行环境的去中心化身份验证的场景示意图;
图7是本申请实施例提供的一种基于可信执行环境的数据处理方法的交互流程示意图;
图8是本申请实施例提供的一种基于可信执行环境的数据处理装置的结构示意图;
图9是本申请实施例提供的一种基于可信执行环境的数据处理装置的结构示意图;
图10是本申请实施例提供的一种计算机设备的结构示意图;
图11是本申请实施例提供的一种数据处理***的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,图1是本申请实施例提供的一种区块链网络分层结构的示意图。图1所示的区块链网络分层结构可以应用于区块链***。其中,区块链(Blockchain)是一种分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链本质上是一个去中心化的数据库,该数据库中的每个节点均存储一条相同的区块链。本申请实施例中的区块链网络分层结构可以参见图1所示的区块链网络,该区块链网络对应的完整区块链业务体系可以由图1所示的业务网络100a(即业务层)和核心共识网络200a(即核心共识层)所组成。
可以理解,在上述区块链网络中,业务网络100a(也可称为见证网络)与核心共识网络200a彼此独立,可以通过路由网络(即路由代理层)对业务网络100a和核心共识网络200a进行网络隔离。例如,可以通过路由网络中的路由节点,对点对点(Peer To Peer,简称P2P)网络进行网络分层,以形成“业务网络—核心共识网络”这样的分层结构,进而能够提高区块链上数据的保密性和安全性。其中,路由网络中的路由节点的节点数量可以为一个或者多个,在此不做限定。
可以理解的是,图1所示的业务网络100a可以部署有多个业务节点,这里将不对部署在业务网络100a中的业务节点的数量进行限制。例如,如图1所示,业务网络100a具体可以包括业务节点110a、业务节点110b、业务节点110c、…、业务节点110n。在本申请实施例中,业务节点不需要参与记账共识,主要用于执行交易业务,以得到与该交易业务相关联的交易数据,并及时进行数据的清分同步。其中,业务节点可以为包含有完整的区块链数据库的全量节点(Full Node),也可以为存储区块链数据库中的部分数据的轻量节点(Lightweight Node),这类节点可以通过“简化支付验证(Simplified PaymentVerification,简称SPV)”的方式完成交易校验,因此也可以称之为SPV节点,这里将不对业务节点的类型进行限定。例如,在一些实施例中,为了减少业务节点的存储空间的浪费,业务节点可以为轻量节点,该业务节点不需要存储完整的交易数据,而是通过身份认证的方式,从核心共识网络中获得区块头数据和部分授权可见的区块数据(例如,与该业务节点自身相关联的交易数据)。
可以理解的是,图1所示的核心共识网络200a可以部署有多个共识节点(即记账节点),这里将不对部署在核心共识网络200a中的共识节点的数量进行限制。例如,如图1所示,核心共识网络200a具体可以包括共识节点120a、共识节点120b、共识节点120c、…、共识节点120m,这些共识节点可以运行有区块链共识协议。其中,共识节点可以为包含有完整的区块链数据库的全量节点,该共识节点可以参与校验、广播交易数据以及区块信息,且会发现和维持与其他节点的连接。
应当理解,本申请实施例可以将位于上述区块链网络中的业务节点以及共识节点统称为区块链节点(可简称为节点)。其中,区块链节点可以为接入该区块链网络中的服务器,也可以为接入该区块链网络中的终端,这里对区块链节点的具体形式不做限定,每个区块链节点均可以包括硬件层、中间层、操作***层和应用层。其中,这里的服务器可以是独立的一个物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、掌上电脑、移动互联网设备(mobileinternet device,MID)、可穿戴设备(例如智能手表、智能手环等)、智能电脑、智能车载等智能终端。
可以理解的是,图1所示的业务网络100a和核心共识网络200a可以处于不同的网络环境,例如,在一些实施例中,业务节点可以部署在处于公网的业务网络中,而运行区块链共识协议的共识节点则可以部署在私有的核心共识网络中,二者可以通过路由边界进行交互。在这种情况下,由于核心共识网络处于相对安全的私有云中,其互相访问本就有共识机制保证安全,不需要额外加入身份管理和网络控制;而业务节点处于公共网络中,可能会被其他不确定的网络终端访问,因此业务节点以及其他可能的节点接入核心共识网络中的行为需要被严格控制。可选的,在另外一些实施例中,业务节点和共识节点也可以不通过路由节点而直接进行数据传输,这里不进行限定。
此外,需要说明的是,上述区块链***中可以部署智能合约,该智能合约在区块链***中可以理解为是一种区块链各节点(例如共识节点或业务节点)可以理解并执行的代码,可以执行任意逻辑并得到结果。为便于区分,本申请实施例可以将部署在共识节点上的智能合约统称为链上业务合约(可简称为链上合约),同理,可以将部署在业务节点上的智能合约统称为本地业务合约(可简称为本地合约),其中,本地业务合约有独立的本地存储,仅在单个业务节点上执行,共识节点不会再去执行本地业务合约。本地业务合约的执行结果可以由业务节点在交易中提交上链。例如,某个实体对象(如请求执行交易业务的用户)可以通过其持有的终端上的客户端发起合约调用请求(也可称为交易业务请求)的方式,调用共识节点上已经部署好的链上业务合约,或者,调用业务节点上已经部署好的本地业务合约。应当理解,区块链***中可以包括一个或多个智能合约,这些智能合约(例如链上业务合约、本地业务合约)可以以合约标识(例如标识号(Identity document,ID)或名称,还可以包括合约地址或合约函数名(也可以称为合约方法名))来进行区分,而客户端发起的合约调用请求中,也可以携带智能合约的标识号或名称,以此指定区块链需要运行的智能合约。而若客户端所指定的智能合约为需要读取数据的合约,则相关节点可以访问本地存储来进行数据的读取。对于需要上链的交易,最后各个共识节点会互相验证执行结果是否一致(也就是进行共识),若一致则可以将执行结果存入各自的本地账本中,并将执行结果返回至客户端。在本申请实施例中,共识节点上可以部署对象管理合约、可信环境管理合约等多个链上业务合约;业务节点上则可以部署对象管理本地合约等本地业务合约。
在“业务网络—核心共识网络”这样的分层结构下,本申请实施例提供了一种基于可信执行环境的区块链OAuth2身份验证服务器方案,通过将可信执行环境和区块链进行结合,来实现一种无需信任的去中心化安全身份验证服务。为便于后续理解和说明,本申请实施例可以将与业务对象相关联的终端称为业务终端,这里的业务对象是指能够授予访问其相关资源数据的能力(或权限)的实体对象(例如,个人用户、企业用户、机构等),也可称为资源所有者或资源持有者(即Resource Owner)。其中,运行在该业务终端上的第三方应用(Third-party application,也可称为第三方应用程序)对应的客户端可称为目标客户端(Client),可以理解,目标客户端可以向业务对象请求获取资源,且在该业务对象确认授权时,目标客户端可以使用获取到的访问权限来获取该业务对象相关的资源。这里的目标客户端可以为游戏客户端、即时通信客户端、社交客户端、直播客户端、短视频客户端、视频客户端、音乐客户端、购物客户端、小说客户端、支付客户端、浏览器等客户端。其中,目标客户端可以为独立的客户端,也可以为集成在某客户端(例如社交客户端、游戏客户端等)中的嵌入式子客户端,在此不做限定。可以理解,这里的第三方应用是相对于原生应用或官方应用来说的,比如用户A打开应用B,并选择应用C授权登录,此时应用B即为第三方应用。为便于区分,本申请实施例可以将原生应用或官方应用(如应用C)对应的客户端称为业务客户端,业务客户端和目标客户端可以为彼此独立的客户端,或者,目标客户端可以为集成在业务客户端中的嵌入式子客户端,这里不做限定。
其中,可以理解的是,本申请实施例可以通过核心共识网络(如上述核心共识网络200a)中的共识节点为接入区块链网络的任意一个角色(例如,任意一个个人用户、任意一个企业、任意一个机构等实体对象)配置一个区块链节点。所以,在如图1所示的业务网络100a中,业务节点110a、业务节点110b、业务节点110c、业务节点110d、…、业务节点110n可以分别与需要接入该区块链网络中的相应角色(例如前述业务对象)之间存在一一对应关系。以业务对象为企业用户为例,此时,与每个企业用户相关联的区块链节点可以为同一区块链节点(例如,上述图1所示的业务节点110c可以与多个企业用户所对应的业务终端进行数据交互)。比如,在区块链电子票据场景下,可以将每个企业用户所请求的票据业务(比如,电子票据开具业务、电子票据流转业务、电子票据红冲业务、电子票据归档业务等与电子票据相关的业务)统称为一笔交易业务。其中,在上述企业用户为请求通过核心共识网络200a进行开票的开票企业A时,可以通过图1所示的业务节点110c与核心共识网络200a中的共识节点(例如,共识节点120a)进行数据交互,以请求完成相应的交易;同理,开票企业B也可以通过图1所示的业务节点110c与上述核心共识网络200a中的共识节点(例如,共识节点120a)进行数据交互,以请求完成相应的交易;以此类推,开票企业C也可以通过图1所示的业务节点110c与上述核心共识网络200a中的共识节点(例如,共识节点120a)进行数据交互,以请求完成相应的交易。
为便于理解,本申请实施例可以以交易业务为票据业务(比如,电子票据开具业务)为例,当与某个业务对象(例如,开票企业A)相关联的业务节点接收到与交易业务相关联的交易业务请求时,可以将该业务对象所发起的交易业务请求转发给核心共识网络中的某个共识节点,以通过该共识节点对该业务对象所发起的交易业务请求进行交易合法性验证。这样,该共识节点可以在交易合法性验证通过时,将该业务对象所请求的交易业务(比如,上述票据业务)添加至交易池,以便于后续可以将与该交易业务(比如,上述票据业务)相关联的交易数据打包成区块,以在核心共识网络中的共识节点之间进行区块共识,从而可以在区块共识通过后,将该区块的块数据写入至本地缓存和本地存储,以便于后续可以基于上述分布式存储实现多个区块的块数据的并行存储。
另外,可以理解的是,可信执行环境(Trusted Execution Environment,TEE)是一种基于硬件的隐私计算方案,通过软硬件方法在CPU(Central Processing Unit,中央处理器)中构建了一个安全区域,保证其内部加载的程序和数据在机密性与完整性上得到保护。TEE将***的硬件资源与软件资源划分成两个执行环境——可信部分与不可信部分(即普通部分)。这两个环境是隔离的,不可信部分无法访问可信部分的存储、内存。可以理解,TEE是芯片层面上单独划分出来的一片“区域”,这片区域并不一定会占有芯片的物理位置,也许只是在逻辑上占用了一定的执行空间。这片区域负责为代码的执行和数据的储存提供一个更加安全的地方,以此确保其机密性和不可篡改性。在没有TEE的情况下,芯片执行代码,要么将代码储存在芯片内部缓存中,要么储存在芯片外部的“内存”或者硬盘里。但不论是在缓存还是内存,所有的代码和执行过程都能被其它程序所读取,这就导致代码执行不存在隐私性,这对于某些需要隐藏代码以及代码流程的应用而言相当致命。而TEE通过在芯片层面为代码执行提供一片独立区域,这片独立区域无法从软件和硬件层面被其它程序所获取,以此确保了在这片区域中执行的代码的机密和安全。TEE这种不受外部影响的代码执行区域,通过将敏感信息(例如支付密码)放入到TEE中,支付密码的验证通过TEE提供的接口进行,这样只要TEE内部的数据没有被覆盖,或者包含TEE的芯片没有被丢失,TEE就可以一直提供支付密码的验证,而支付密码却几乎不能被外界的程序所获取。另一方面,TEE也会定期通过API(Application Programming Interface)接口提供数据完整性证明,确保外部环境能够得知TEE内部的所储存的值没有发生变化。
目前的可信执行环境方案包括Intel SGX(Software Guard Extensions)方案、ARM TrustZone方案和AMD SEV(Secure Encrypted Virtualization)方案等。其中,IntelSGX方案是Intel提出的相对成熟的可信执行环境方案,可以在Intel生产的特定型号的CPU上支持可信执行环境。在SGX中,用于执行程序代码的TEE环境被称为Enclave(飞地),在Enclave中的数据受到CPU硬件的保护,可以确保其机密性和完整性;Enclave中可以存储数据,存储的数据由可信执行环境硬件密钥的私钥加密。这里的可信执行环境硬件密钥是指Intel在生产CPU时,烧制在CPU中的硬件密钥,其私钥在任何情况下都无法导出,其公钥在特定使用场景下可以导出。
基于此,为了实现真正的去中心化身份验证和授权,本申请实施例提供了一种基于TEE的分布式对象身份管理***,该***使用TEE作为身份验证服务环境,并且和区块链相结合,以为业务对象提供(OAuth2)登录服务。具体来说,业务网络中的任意一个业务节点(如上述图1所示的业务网络100a中的任意一个业务节点,如业务节点110a)均可以作为身份验证服务器(可简称为验证服务器),这里对在业务网络中包含的作为验证服务器的业务节点的数量不做限定。此时,作为验证服务器的业务节点除了可提供其他普通的业务节点所拥有的功能(如验证交易、转发上链、查询状态、查询区块等),还可以提供登录服务和信息读取等功能,因此,本申请实施例中的验证服务器可作为业务节点的一种特殊类型存在。
在本申请实施例中,上述作为验证服务器的业务节点(如上述图1所示的业务网络中的业务节点110a)运行在可信执行环境中,这里的可信执行环境可以为上述列举的任意一种可信执行环境方案或其他未列举的可信执行环境方案所提供的可信执行环境,本申请实施例对此不做限定,例如,可以采用基于上述Intel SGX方案的可信执行环境。这样,在该业务节点获取到目标客户端发送的远程认证请求时,可以基于该远程认证请求对该业务节点的可信执行环境进行远程认证,进而可以在远程认证成功时与目标客户端建立通信连接;进一步地,该业务节点可以基于建立的通信连接获取目标客户端所发送的第一授权申请请求;其中,该第一授权申请请求中携带有业务对象的授权签名信息,且该授权签名信息为目标客户端所访问的业务前端中的业务对象的签名信息;随后,该业务节点可以基于该授权签名信息对业务对象进行身份校验,且可以在身份校验成功时向目标客户端返回相应的授权信息;进一步地,在接收到目标客户端基于该授权信息发送的令牌申请请求时,该业务节点可以将令牌申请请求中的授权信息录入其可信执行环境中的对象管理本地合约,进而可通过该对象管理本地合约对授权信息进行授权验证,且可以在授权验证成功时向目标客户端返回第一访问令牌。后续目标客户端就可以使用该第一访问令牌,以通过上述对象管理本地合约从核心共识网络中的区块链上获取与业务对象相关联的业务资源数据,其中,核心共识网络独立于上述业务网络。
可以理解的是,本申请实施例可以由核心共识网络中的区块链对业务对象的相关数据进行存储和管理,由于区块链本身的不可篡改性,因此可认为从区块链上获取到的数据是可信的,即业务节点可以根据需要对与业务对象相关联的资源数据进行清分同步,以便高效地提供身份验证和资源获取服务。其中,与业务对象相关联的资源数据包括但不限于业务对象的身份注册信息、权限注册信息、执行业务对象所请求的交易业务后所生成的交易数据、以及与该交易数据相关联的合约数据等等。比如,这里的身份注册信息可以由业务对象在注册成为区块链上的注册对象时所提交的基础身份信息所确定,例如可以包括该业务对象在各类应用客户端(如前述即时通信客户端、社交客户端等)上进行注册时所提交的手机号、头像、昵称等信息;权限注册信息可以包括业务对象注册成为区块链上的注册对象时所申请配置的权限,例如可以包括该业务对象具体具备访问区块链上的哪些链上业务合约(如对象管理合约、与票据业务相关的票据业务合约等)的权限;此外,这里的交易业务可以包括但不限于票据业务(比如,电子票据开具业务、电子票据流转业务、电子票据红冲业务、电子票据归档业务等与电子票据相关的业务)、与票据业务相关联的票据衍生业务(例如,信贷业务、进出亏业务、企业资质业务、征信业务、社交业务、赊购业务和退税业务、抽奖业务等)、文件业务(例如,电子文件开具业务、电子文件流转业务、电子文件修正业务、电子文件归档业务等与电子文件相关的业务)、与文件业务相关联的文件衍生业务(例如,机构合作业务、企业资质业务、处方统计业务、资格审查业务、政务管理业务等),相应的,执行这些交易业务后所生成的交易数据可以包括但不限于与票据业务相关联的电子票据、该电子票据中部分授权可见的票据信息、与该电子票据相关联的通用票据关联资产(例如,征信信息、税务信息等)、以及与文件业务相关联的电子文件或该电子文件中部分授权可见的文件信息(例如,电子证书中的证书信息)、与该电子文件相关联的通用文件关联资产(例如,资质信息、处方统计结果等)。此外,这里的合约数据可以包括调用对应业务合约(可包括链上业务合约和本地业务合约)来执行交易业务后业务对象的数据状态(如执行该交易业务后所得到的交易读写集)。
由此可见,通过本申请实施例提供的分布式对象身份管理***,可以实现无需信任的去中心化安全身份验证服务,且可以提升对象身份管理***的安全性和可靠性。
为便于理解,进一步地,请参见图2a-图2c,图2a-图2c是本申请实施例提供的一种基于可信执行环境的数据处理场景示意图。如图2a所示的用户21a为上述业务对象,该用户21a所使用的终端为业务终端20A,在业务终端20A上运行的客户端21b则可以为上述目标客户端。此外,如图2a所示的业务节点20B可以为业务网络中作为验证服务器的业务节点,且该业务节点20B运行在可信执行环境中;该业务节点20B可以为上述图1所示的业务网络100a中的任意一个业务节点,例如,业务节点110a。可以理解,当业务终端20A也作为业务节点接入业务网络时,其对应的业务节点可以与业务节点20B相同,也可以与业务节点20B不相同,这里不做限定。
如图2a所示,客户端21b希望访问用户21a的某些资源数据(例如用户21a的手机号)时,需要先与业务节点20B建立通信连接,其中,在客户端21b首次与该业务节点20B建立通信连接之前,需要对业务节点20B的可信执行环境进行远程认证,以确保该可信执行环境是可信的。基于此,客户端21b可以向业务节点20B发送远程认证请求,业务节点20B在获取到该远程认证请求时,可以基于该远程认证请求对其可信执行环境进行远程认证。可以理解,针对不同可信执行环境方案的可信执行环境,其对应的远程认证过程也不相同,比如,在业务节点20B采用基于上述Intel SGX方案的可信执行环境时,相应的,也需要通过SGX远程认证来证明该可信执行环境的有效性,当远程认证成功时,可表明Enclave中的应用程序未被篡改,且Enclave中的应用程序真的运行在SGX平台上。可以理解,在远程认证成功时,业务节点20B可以与客户端21b建立通信连接,之后二者就可以通过该通信连接进行数据交互。可以理解,上述远程认证只在客户端21b初次连接业务节点20B时执行一次即可。
进一步地,如图2b所示,客户端21b在向用户21a申请访问相关资源数据的授权时,可以迅速从客户端21b跳转到业务前端,这里的业务前端用于与用户21a进行交互,以便进行登录操作。如图2b中的界面21c所示,该业务前端可以向用户21a展示相应的授权提示信息,例如,该授权提示信息可以用于指示客户端21b希望向用户21a申请访问的资源数据具体有哪些(例如用户21a的手机号)。此外,该业务前端上还可以展示为用户21a提供交互操作的业务控件,例如业务拒绝控件21d和业务授权控件21e,可以理解,当用户21a不希望授权客户端21b访问相关资源数据时,可以选择触发业务拒绝控件21d,此时业务前端可以返回相应的拒绝提示信息,客户端21b无法访问用户21a的相关资源数据;反之,当用户21a确认授权客户端21b访问相关资源数据时,可以选择触发业务授权控件21e,此时业务前端可以响应于针对该业务授权控件21e的触发操作,唤起用户21a自身的对象密钥管理工具(比如去中心化钱包)对客户端21b最初发起的授权申请(可称为第二授权申请请求)进行签名,从而可以得到用户21a的授权签名信息,此时表示用户21a做了授权。随后,客户端21b可以基于得到的授权签名信息向业务节点20B发送第一授权申请请求(即在前述第二授权申请请求之后的授权申请请求),进而业务节点20B可以基于该第一授权申请请求中携带的用户21a的授权签名信息,对用户21a进行身份校验;进而在对用户21a身份校验成功时,业务节点20B可以向客户端21b返回相应的授权信息,如图2b中的界面21f所示,此时用户21a完成针对客户端21b的用户登录,可以在客户端21b上进行相应操作(例如在客户端21b上浏览图片、视频等内容)。
可以理解,除了上述界面21c所展示的交互形态(即直接触发相应的业务控件),业务前端还可以提供其他的交互形态,例如,业务前端可以显示指定的二维码图像提示用户21a通过扫码授权,则在用户21a通过对该二维码图像进行扫码操作并确认授权后,可以实现用户登录,本申请实施例对业务前端所采用的交互形态不做限定。
进一步地,在客户端21b真正要去获取用户21a相关的资源数据时,需要先向业务节点20B申请相应的访问令牌。如图2c所示,客户端21b可以基于上述获得的授权信息向业务节点20B发送令牌申请请求,随后,业务节点20B可以将该令牌申请请求中携带的授权信息录入其可信执行环境中的对象管理本地合约,并通过该对象管理本地合约对录入的授权信息进行授权验证。可以理解,这里的对象管理本地合约是部署在业务节点20B的可信执行环境中的本地业务合约,可提供用户登录验证服务。进一步,在授权验证成功时,业务节点20B可以向客户端21b返回对应的访问令牌(即第一访问令牌),这样,在客户端21b希望去获取用户21a授权的资源数据来执行自身的业务时,可以通过该第一访问令牌调用对象管理本地合约,以从核心共识网络(例如,上述图1所示的核心共识网络200a)中的区块链上获取该第一访问令牌对应的资源数据(即业务资源数据)。比如,当上述客户端21b为购物客户端时,用户21a可以通过授权客户端21b读取的手机号登录该客户端21b对应的购物平台,且可以通过用户21a的手机号查询用户21a是否为在该客户端21b对应的购物平台注册过的会员,还可以在用户21a通过该客户端21b进行购物时,使用用户21a的手机号生成相应的订单信息。又比如,客户端21b可以获取用户21a授权读取的电子票据(如购物时开具的电子***)来统计用户21a在某个时间段内在该购物平台上购买的物品类型和每种物品类型对应的消费金额,从而客户端21b可以基于统计结果为用户21a提供个性化推荐。
在本申请实施例中,访问令牌具有时效性和权限范围,从而可以保证访问令牌既可以让第三方应用获得权限,同时又随时可控,不会危及***安全。由此可见,本申请实施例将可信执行环境和区块链进行结合,通过业务节点20B的可信执行环境为用户21a提供安全的身份验证服务,而无需信任业务节点20B的运行者,且通过不可被篡改的区块链管理用户21a的相关信息,可以实现无需信任的去中心化安全身份验证服务。
需要说明的是,本申请实施例中的业务节点和目标客户端在从区块链上获取业务对象(例如,上述个人用户或者企业用户或者机构)的身份注册信息、权限注册信息、执行业务对象所请求的交易业务后所生成的交易数据、与该交易数据相关联的合约数据等资源数据时,可以显示提示界面或者弹窗(如本申请实施例中的业务前端,可参见上述图2b所示的界面21c),该提示界面或者弹窗用于提示业务对象当前正在搜集身份注册信息、权限注册信息、交易数据、合约数据等资源数据,仅仅在获取到业务对象对该提示界面或者弹窗发出确认操作(如业务对象通过前述业务前端确认授权)后,开始执行数据获取的相关的步骤,否则结束。
此外,可以理解的是,在本申请的具体实施方式中,可能涉及到用户、企业、机构等业务对象的资源数据(例如,用户的手机号、头像、昵称等,用户的开票信息、征信信息、退税信息等,企业的进出亏、企业资质等信息,用户或企业的合同信息、证书信息、处方信息等),当本申请以上实施例运用到具体产品或技术中时,需要获得用户、企业、机构等业务对象的许可或同意(即授权),且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
其中,业务网络中的业务节点对其可信执行环境进行远程认证,并基于目标客户端发送的第一授权申请请求中携带的授权签名信息对业务对象进行身份校验,以及通过对象管理本地合约对授权信息进行授权验证,最终为目标客户端发放第一访问令牌的具体实现方式可以参见下述图3-图7所对应的实施例。
进一步的,请参见图3,图3是本申请实施例提供的一种基于可信执行环境的数据处理方法的流程示意图。如图3所示,该方法可以由业务网络中的业务节点执行,比如,该业务节点可以为上述图1所示的业务网络100a中的任意一个业务节点,且该业务节点可作为验证服务器和资源服务器运行在可信执行环境(即TEE)中。该方法具体可以包括以下步骤S101-步骤S104:
步骤S101,获取目标客户端发送的远程认证请求,基于远程认证请求对业务节点的可信执行环境进行远程认证,且在远程认证成功时,与目标客户端建立通信连接;
可以理解,核心共识网络中的区块链上部署有可信环境管理合约,具体可以为TEE服务管理合约,该TEE服务管理合约用于管理业务节点的可信执行环境。而业务节点是在可信执行环境中启动的,为便于区分,可以将在该可信执行环境中运行的TEE应用程序称为可信应用(如前述Enclave中的应用程序,可简称Enclave程序),该可信应用可由开发人员开发并部署在可信执行环境中;相应的,运行在该可信执行环境以外的应用程序称为不可信应用或普通应用。在本申请实施例中,每个可信应用均有一个唯一的应用度量值(measure),该值可通过可信应用的二进制文件与可信应用的初始化数据计算得出(例如对该二进制文件和初始化数据进行哈希运算),也可以通过可信应用的版本信息计算得出(例如对该版本信息进行哈希运算),这里不做限定。对可信应用的任何更改都会导致其应用度量值发生变化,因此应用度量值可理解为可信应用的特定指纹。此外,已经注册过的或者官方认证过的可信应用的应用度量值会被发布到链上的可信环境管理合约中,所有第三方应用均可以通过链上的可信环境管理合约,获取到作为验证服务器的业务节点中的可信应用对应的应用度量值。
基于此,可以理解的是,在任何第三方应用首次与业务节点的可信执行环境建立连接前,都需要对该可信执行环境进行远程认证,如认证该可信执行环境的有效性以及所运行的可信应用的应用度量值和链上的可信环境管理合约中的应用度量值一致,这样,所有第三方应用就不需要信任TEE服务的运行方(即业务节点的运行方),而认为该TEE服务是可信且不能作恶的。
其中,可以理解,目标客户端可以向业务节点发送远程认证请求,以触发业务节点进行远程认证。下面以业务节点的可信执行环境为Intel SGX方案的可信执行环境为例,对其远程认证过程进行阐述,对于其他方案的可信执行环境的远程认证过程可以参考此过程。为便于理解,请参见图4,图4是本申请实施例提供的一种远程认证的场景示意图。如图4所示,该远程认证过程主要包括三方面平台:(1)中继服务设备(也可称为服务提供者、挑战者);(2)业务节点中运行的应用程序的可信部分(即可信应用,Enclave)和不可信部分(即普通应用,Application),以及QE(Quoting Enclave,可称为验证飞地);此时,业务节点可作为SGX平台;(3)远程认证服务器(也可称为英特尔认证服务,即Intel AttestationService,IAS)用于验证远程认证报告。
具体的,业务节点在获取到该远程认证请求时,可以基于该远程认证请求获取与可信执行环境相关联的待验证关键信息,这里的待验证关键信息(也可称为Quote)是在作为SGX平台的业务节点中运行的ISV(Independent Software Vendor)Enclave(即Enclave程序开发者)、与业务节点相关联的中继服务设备、业务节点中运行的普通应用、可信应用以及QE之间的多方交互过程中所产生的(包括本地认证、签名、加密等步骤),最终待验证关键信息是由QE生成并加密,且可将其发送给业务节点中的普通应用。其中,该待验证关键信息可包含QE的身份、执行模式细节(例如SVN(Security Version Number)级别)和其他数据。进一步,业务节点中的普通应用可以将该待验证关键信息发送给与业务节点相关联的中继服务设备进行验证,然而由于该待验证关键信息是加密的,其只能由英特尔来验证,因此,中继服务设备可以将该待验证关键信息转发至远程认证服务器进行验证。进一步地,远程认证服务器可以基于该待验证关键信息对可信执行环境进行有效性验证(包括解密、验签等步骤),且在有效性验证成功时,向中继服务设备返回一个新的认证验证报告,以作为对中继服务设备的响应,其中,该认证验证报告包含远程认证服务器对上述待验证关键信息的认证结果。可以理解,一份合法的认证验证报告可证实业务节点的可信执行环境(或者飞地)的确是在真正的Intel SGX处理器上运行一段特定代码。随后,中继服务设备可以基于认证验证报告验证上述ISV Enclave的身份,并向作为SGX平台的业务节点提供适当的响应,例如,在基于认证验证报告对ISV Enclave身份验证成功时,向业务节点返回认证成功响应信息。
可以理解,进一步地,在接收到中继服务设备基于认证验证报告返回的认证成功响应信息时,业务节点可以确定上述可信执行环境为安全环境,且可以获取作为安全环境的可信执行环境中所部署的可信应用的应用度量值作为本地应用度量值;此外,还可以通过可信执行环境中部署的对象管理本地合约,将从区块链上的可信环境管理合约中获取到的可信应用对应的应用度量值作为目标应用度量值;进而可以将获取到的本地应用度量值与目标应用度量值进行比对(即验证本地应用度量值是否为可信度量值),可选的,在本地应用度量值与目标应用度量值比对一致时,表示上述可信应用是已经公开的应用程序,可以确定可信执行环境远程认证成功(即表明可信执行环境和其中运行的可信应用都是可信的),此时业务节点可以与目标客户端建立通信连接,后续业务节点与目标客户端之间的数据交互均可通过该通信连接实现;反之,可选的,若本地应用度量值与目标应用度量值比对不一致,则确定可信执行环境远程认证失败。
其中,可以理解的是,对象管理本地合约是在核心共识网络中发布、同步到业务节点执行的一种本地业务合约,具体可以为用户管理本地合约;该对象管理本地合约与部署在共识节点上的对象管理合约(可用于管理接入区块链网络的实体对象)相关联,业务节点可以同步与对象管理合约相关的账本数据和合约数据,而在业务节点本地的可信执行环境中,与用户身份管理相关的一些业务(例如用户登录验证)则会与对象管理本地合约进行交互。
基于此,业务节点可以调用该对象管理本地合约中的度量值读取方法,基于上述可信应用的应用标识(如应用名称或应用ID)向共识节点发送度量值读取请求,以使共识节点在通过对该度量值读取请求的校验时,从可信环境管理合约中获取上述应用标识所指示的可信应用对应的应用度量值,并将获取到的应用度量值作为目标应用度量值返回给业务节点,以使业务节点将获取到的目标应用度量值与本地应用度量值进行比对。
其中,上述通信连接可以根据业务需要采用合适的通信协议,例如TCP(Transmission Control Protocol,传输控制协议)、UDP(User Datagram Protocol,用户数据报协议)、RTP(Real-time Transport Protocol,实时传输协议)、SCTP(StreamControl Transmission Protocol,流控制传输协议)等,这里对通信连接所采用的通信协议不做限定。
步骤S102,基于通信连接获取目标客户端发送的第一授权申请请求;第一授权申请请求中携带业务对象的授权签名信息;
可以理解,在目标客户端与业务节点建立通信连接后,目标客户端可以基于该通信连接向业务节点发送用于申请相关资源数据访问权限的第一授权申请请求,相应的,业务节点也可以基于该通信连接接收第一授权申请请求。
其中,第一授权申请请求中携带业务对象的授权签名信息,且该授权签名信息为目标客户端所访问的业务前端中的业务对象的签名信息。更具体的,该授权签名信息是在业务对象通过业务前端进行登录操作时,由与业务对象相关联的对象密钥管理工具通过业务对象的对象私钥信息,对目标客户端发起的第二授权申请请求进行签名后所得到的,这里的第二授权申请请求为前述第一授权申请请求之前的授权申请请求。也就是说,业务对象可以通过与业务前端进行交互,以选择是否对目标客户端进行授权,具体过程可以为:目标客户端首先向业务前端发送第二授权申请请求,此时在业务终端的显示界面将迅速从目标客户端跳转到业务前端,这里的业务前端可以为显示在业务终端上的提示界面或者弹窗,这里对业务前端的具体展示形态不做限定,例如可以参见上述图2b所示的界面21c。需要说明的是,该业务前端是没有后台服务的,在业务对象通过业务前端进行登录操作时,可以选择是否授权以及授权哪些信息,可以理解,目标客户端(如视频客户端)可能会向业务对象申请读取多种不同类型的资源数据的权限,例如业务对象在业务客户端(如即时通信客户端)上配置的头像、昵称、通讯录、手机号等,业务对象可以授权目标客户端读取其申请访问的全部资源类型的资源数据,也可以只授权目标客户端读取指定资源类型的资源数据(如业务对象的头像和昵称)。若业务对象确认授权登录(如上述图2b中触发业务授权控件21e),则业务前端可以帮助业务对象唤起自身的对象密钥管理工具,以通过对象密钥管理工具中的业务对象的对象私钥信息对上述第二授权申请请求进行签名,从而得到业务对象的授权签名信息,该授权签名信息用于表征业务对象确认授权目标客户端(如视频客户端)获取相关资源数据,即授权是经过业务对象同意的,允许目标客户端读取业务对象在区块链上的相关资源数据(如业务对象在业务客户端(如即时通信客户端)上配置的头像和昵称),且可通过该资源数据为业务对象实现登录。
需要说明的是,本申请实施例中,在业务对象通过业务前端进行登录操作时,不会跳转到任何第三方服务(例如第三方登录服务器)中,该业务前端主要用于唤起业务对象的去中心化钱包进行授权签名,由于该过程没有跳转到外部服务,且业务对象通过去中心化钱包进行授权签名的行为无法被仿照和复制,因此可以确保授权签名的可靠性。
其中,这里的对象密钥管理工具用于生成和保存业务对象的对象公钥信息和对象私钥信息,该对象密钥管理工具可在本地或远程托管;在一些实施例中,对象密钥管理工具具体可以为去中心化钱包,这里的去中心化钱包是指存储了业务对象自行持有的对象私钥信息的区块链钱包,除了基础的存储转账功能外,去中心化钱包还能与链上业务合约进行交互。可以理解,去中心化钱包作为区块链***的一环,上述第二授权申请请求是以区块链交易的方式进行发送,但该交易并不上链,仅用于目标客户端发送给作为验证服务器的业务节点进行身份校验;相应的,去中心化钱包对于该第二授权申请请求会进行区块链交易签名。
进一步地,目标客户端可以获取业务对象的对象公钥信息和对象身份标识,进而可以基于该对象身份标识、授权签名信息以及对象公钥信息生成第一授权申请请求,并通过前述通信连接将该第一授权申请请求发送至业务节点。其中,该对象身份标识是指业务对象在通过区块链上的对象管理合约进行身份注册时,由核心共识网络中的共识节点为业务对象配置的独一无二的身份标识,其包括但不限于业务对象对应的区块链地址、对象标识符(如基于对应区块链地址按顺序分配或随机分配的用户ID,比如0001、0002、0003等)、对象名称等。
步骤S103,基于授权签名信息对业务对象进行身份校验,且在身份校验成功时,向目标客户端返回授权信息;
可以理解,当业务节点启动时,可以进行数据清分,例如,业务节点可以将执行交易业务后所生成的交易数据缓存至该业务节点的节点内存,该业务节点还可以将交易数据广播至核心共识网络,以使核心共识网络中的共识节点在达成共识时,将该交易数据进行上链。可以理解的是,在共识节点上链成功时,可以将完整的新区块(即待同步区块)发送至业务节点,以使业务节点对待同步区块进行区块同步,且在区块同步完成时,在该业务节点的节点内存中对已经成功同步的交易数据进行数据清分。
其中,在一些实施例中,业务节点具体可以是SPV节点,则前述验证服务器可以作为SPV节点的一种特殊类型存在(也可称为TEE SPV节点),这种特殊的SPV节点在TEE环境中启动。当业务节点作为SPV节点启动时,可以不需要同步完整的区块,而只同步区块头数据和部分授权可见的区块数据(例如,与该业务节点自身相关联的交易数据)。比如,SPV节点可以调用其部署的对象管理本地合约中的交易同步方法,向共识节点发送交易同步请求,以使共识节点基于该交易同步请求,将该SPV节点有权限读取的交易数据同步给该SPV节点,在交易同步完成时,可在该SPV节点的节点内存中对已经成功同步的交易数据进行数据清分。此外,为了验证整个区块链的块链结构,该SPV节点还可以同步区块链上每个区块的区块头数据以及相关的默克尔路径数据等信息。
可以理解的是,由于本申请实施例中的业务节点可作为验证服务器和资源服务器使用,因此,除了上述提及的区块头数据、默克尔路径数据、与该业务节点自身相关联的交易数据以外,作为验证服务器的业务节点还可以同步与链上的对象管理合约相关的账本数据和合约状态,其中包括与身份校验相关的数据(例如对象注册信息),同理,作为资源服务器的业务节点可以同步与业务对象相关联的资源数据(如前述业务对象的身份注册信息、权限注册信息、执行业务对象所请求的交易业务后所生成的交易数据、以及与该交易数据相关联的合约数据)。在本申请实施例中,可以将业务节点从核心共识网络中清分下来的所有数据划分为两类进行存储,如对象登录凭证数据库和节点业务数据,以便后续能顺利实现登录验证和资源访问,而不会造成数据混杂。具体的,业务节点可以在可信执行环境中构建对象登录凭证数据库,具体可以为用户登录凭证DB;该对象登录凭证数据库用于存储从区块链上的对象管理合约中同步来的所有注册对象的对象注册信息,这里的注册对象的对象注册信息是指接入区块链***的实体对象(如个人用户、企业用户、机构等)通过区块链上部署的对象管理合约进行身份注册时所确定的配置信息,可以理解,成功在对象管理合约中进行身份注册的实体对象(如前述业务对象)会成为对象管理合约中的注册对象,此后就可以通过对象管理合约对其身份权限等进行管理。其中,注册对象的对象注册信息可以包括共识节点为每个注册对象配置的唯一的身份标识(包括但不限于注册对象对应的区块链地址、对象标识符(如按顺序分配或随机分配的用户ID)、对象名称等)、业务权限等信息。此外,对象登录凭证数据库还可以用于存储后续从区块链上同步过来的访问令牌,也就是说,对象登录凭证数据库可理解为存储有所有注册对象的身份权限的数据库,可便于对用户凭证(如访问令牌)和状态的查询。由于该对象登录凭证数据库是启动在可信执行环境(即TEE)中,因此其存储的数据对外部是不可见的。相应的,除了需要存储在对象登录凭证数据库中的数据,其他从共识节点同步过来的数据均可作为节点业务数据(也可称为SPV账本数据)存储在可信执行环境中,因此这里的节点业务数据对外部也是不可见的。例如,节点业务数据可包括与业务对象相关联的资源数据。此外,这里的节点业务数据还可以包括业务节点自身执行交易业务时在本地所产生的相关交易数据。可以理解,基于可信执行环境的隐私性,业务节点可以提供相关接口供外部使用,如令牌发放服务接口、信息读取服务接口等。
其中,可以理解,内置在区块链上的对象管理合约具体可以为用户管理合约,通过该用户管理合约可以管理整个区块链***的接入者(比如,公开网络参与方)和参与者(比如,内部参与方)的身份,此外,通过该用户管理合约还可以对这些接入者和参与者的业务权限进行管理,比如,以个人用户为例,通过该用户管理合约可以管理该个人用户的身份、注册、冻结和权限设计等。在本申请实施例中,业务节点对对象管理合约的相关账本数据和合约状态进行同步的过程,以及实体对象进行身份注册的过程,均可以通过区块链交易的方式调用该对象管理合约来实现。
可以理解的是,在区块链***运转的过程中,将不断有新的区块写入核心共识网络中的区块链,则业务节点可以通过对象管理本地合约,持续地从区块链上获取相关数据(如新区块中的区块头数据、与该业务节点自身相关联的交易数据或与业务对象相关联的交易数据等)来更新其本地所存储的数据,以保证可信执行环境中存储的数据状态与区块链上最新的数据状态同步。
此外,对象管理本地合约可以封装有验证用户状态(如验证用户的业务状态是否为业务登录状态)、接收用户登录验证处理等功能,该对象管理本地合约在进行登录和验证操作时,依赖于上述对象登录凭证数据库进行相关信息读取和验证,具体实现方式可参见下述内容。
如前所述,目标客户端发送的第一授权申请请求中包含有业务对象的授权签名信息、业务对象的对象公钥信息以及业务对象的对象身份标识,因此,业务节点可以基于该第一授权申请请求中携带的授权签名信息、对象公钥信息以及对象身份标识,判断业务对象是否为在链上的对象管理合约中的注册对象(即验证区块链上是否存在该业务对象相关的信息),从而完成对业务对象的身份校验。
具体的,业务节点可以从上述第一授权申请请求中获取业务对象的授权签名信息和对象公钥信息,进而可以通过该对象公钥信息对对象签名信息进行签名验证,得到签名验证结果。可以理解,在签名验证结果指示签名验证成功时,可表示业务节点确认业务对象已经同意授权,此时可以通过调用可信执行环境中的对象管理本地合约(具体可以调用该对象管理本地合约中的身份校验方法),在对象登录凭证数据库存储的注册对象的对象注册信息中查找与对象身份标识相同的身份标识;可以理解,若查找到与对象身份标识相同的身份标识,则可以确定该业务对象为注册对象,即区块链上存在该业务对象的相关数据,此时可以将业务对象为注册对象时的身份校验成功结果作为身份校验结果,进而可以基于该身份校验结果向目标客户端返回授权信息。反之,可选的,若业务节点在注册对象的对象注册信息中未查找到与对象身份标识相同的身份标识,则可以确定该业务对象为非法对象,即区块链上不存在该业务对象的相关数据。
例如,假设当前区块链上的注册对象有4个,分别为注册对象1、注册对象2、注册对象3以及注册对象4,相应的,对象登录凭证数据库中可存储有这4个注册对象的对象注册信息,其包含注册对象1的身份标识A1、注册对象2的身份标识A2、注册对象3的身份标识A3以及注册对象4的身份标识A4;此外,业务对象B的对象身份标识为身份标识B1,那么,在对业务对象B的对象签名信息验签成功时,业务节点可以在上述身份标识A1~身份标识A4中查找与身份标识B1相同的身份标识,假设查找到身份标识A2与该身份标识B1相同,那么可以确定业务对象B为在链上的对象管理合约中成功进行身份注册的注册对象2。
可以理解,由于实际业务场景的多样化,业务节点可以通过多种授权方式来为目标客户端颁发访问令牌,相应的,采用不同的授权方式向目标客户端返回的授权信息也不相同,实际应用中可以根据业务需求选择合适的授权方式。本申请实施例提供了两种可选的令牌获取方式,下面将分别对其进行阐述。
可选的,在一种实施方式中,在上述身份校验结果指示身份校验成功时,业务节点可以通过对象管理本地合约将业务对象的业务状态配置为业务登录状态,即业务对象成功登录目标客户端;可以理解,对象管理本地合约可以通过从对象登录凭证数据库中获取到的业务对象相关的身份状态和身份注册信息,例如可以获取业务对象在业务客户端上配置的昵称和头像,以作为业务对象在目标客户端上登录的信息来使用。进一步,业务节点可以基于该业务登录状态为目标客户端配置第一授权有效时长和第一访问权限范围。可以理解,这里的第一授权有效时长是指业务对象授权目标客户端访问其资源数据的有效时长(例如,7天),超过该第一授权有效时长后,目标客户端无法再获取访问令牌去访问相关资源数据;第一访问权限范围是指业务对象授权目标客户端访问其资源数据的权限范围,这里的权限范围可以包括权限类型和与权限类型相关联的资源类型,其中,该权限类型可包括只读权限和读写权限,可以理解,只读权限比读写权限更安全;此外,可以根据需要对与业务对象相关联的资源数据进行分类,以得到不同的资源类型划分,例如可以按照资源数据的来源进行划分(例如,将来源于购物平台的电子票据和来源于医疗平台的电子票据划分为不同的资源类型),也可以按照资源数据的内容进行划分(例如,将业务对象的头像、昵称、手机号、电子票据等信息均划分为不同的资源类型),本申请实施例对此不做限定。可以理解,通过第一访问权限范围可以指定目标客户端可以只读哪些资源类型的资源数据,或者,可以指定目标客户端可以读写哪些资源类型的资源数据。
进一步地,业务节点可以基于第一授权有效时长和第一访问权限范围为目标客户端配置授权码,并通过可信执行环境的硬件私钥信息对该授权码进行签名,从而得到硬件签名信息。其中,业务节点可以直接对第一授权有效时长和第一访问权限范围进行数据映射或者哈希运算,以得到对应的授权码,或者,也可以对第一授权有效时长进行数据映射或者哈希运算,得到第一码值,同时,可以对第一访问权限范围进行数据映射或者哈希运算,得到第二码值,随后可以将第一码值和第二码值进行拼接,或者,对第一码值和第二码值再次进行数据映射或者哈希运算,从而得到对应的授权码。可以理解,这里的授权码可以采用字符串的形式呈现。此外,可选的,除了根据第一授权有效时长和第一访问权限范围生成授权码,还可以添加更多的信息来与第一授权有效时长和第一访问权限范围共同生成授权码,例如,可以添加业务对象的对象身份标识,用于指示权限授予方,还可以添加目标客户端的客户端标识,用于指示授权申请的发起方。
进一步,业务节点可以获取上述硬件私钥信息对应的硬件公钥信息,并对授权码、硬件签名信息以及硬件公钥信息进行数据映射,得到第一授权信息,这里的第一授权信息也可以采用字符串的形式呈现;随后可将第一授权信息返回至目标客户端,以使目标客户端可以基于该第一授权信息向业务节点申请相应的访问令牌。其中,这里的硬件公钥信息和硬件私钥信息可以统称为可信执行环境硬件密钥,该硬件密钥烧制在CPU中,其硬件私钥信息在任何情况下都无法导出,其硬件公钥信息在特定使用场景下可以导出(例如添加至上述第一授权信息中)。
可选的,可以理解,上述授权码也可以是业务节点随机生成的字符串,或者是业务节点基于特定的字符生成规则所生成的字符串,此时业务节点可以对该授权码、前述第一授权有效时长、第一访问权限范围、硬件签名信息以及硬件公钥信息进行数据映射,以得到第一授权信息,这样后续对第一授权信息进行授权验证时,不需要解析授权码就可以获取第一授权有效时长和第一访问权限范围。
其中,本申请实施例中的数据映射可以指采用特定的数据映射规则,将指定位置上的数据映射为对应字符的映射方式。
可选的,可以理解,为了保证数据传输的安全性,业务节点还可以通过硬件公钥信息对第一授权信息进行加密处理,并将加密处理后的第一授权信息返回给目标客户端,此时,由于目标客户端无法获取硬件私钥信息对加密处理后的第一授权信息进行解密,因此后续申请令牌时,仍可以将该加密处理后的第一授权信息发送给业务节点进行解密处理,以及对解密处理得到的授权信息进行授权验证。
此外,可以理解,上述对象登录凭证数据库中可以存储业务对象的业务状态和身份权限信息,本申请实施例可以通过对象管理本地合约管理业务对象在验证服务器上的相关业务状态(如业务登录状态、退出登录状态等),具体表现为对该对象登录凭证数据库的CURD(即创建(Create)、更新(Update)、读取(Read)和删除(Delete))操作。例如,在用户A通过上述过程成功登录某个第三方应用时,通过对象管理本地合约可以将用户A在对象登录凭证数据库中的业务状态由退出登录状态更新为业务登录状态,且可以在用户A处于业务登录状态时,将访问令牌发给第三方应用;在用户A登录一段时间后,通过对象管理本地合约可以对当前用户A的业务登录状态进行续期,或者,在登录超时后,可以将用户A的业务状态由业务登录状态更新为退出登录状态,此时第三方应用不能再去获取访问令牌。
可选的,在另一种实施方式中,在上述身份校验结果指示身份校验成功时,业务节点可以通过对象管理本地合约将业务对象的业务状态配置为业务登录状态,即业务对象成功登录目标客户端,此时可以基于该业务登录状态为目标客户端配置第二授权有效时长和第二访问权限范围,此处第二授权有效时长和第二访问权限范围的含义与上述第一授权有效时长和第一访问权限范围的含义类似,这里不再进行赘述。
进一步地,业务节点可以基于可信执行环境的硬件公钥信息对第二授权有效时长和第二访问权限范围进行加密处理,得到第二授权信息,随后可将第二授权信息返回至目标客户端,以使目标客户端可以基于该第二授权信息向业务节点申请相应的访问令牌。此外,可选的,除了第二授权有效时长和第二访问权限范围,还可以添加更多的信息来与第二授权有效时长和第二访问权限范围共同进行加密处理,例如,可以添加业务对象的对象身份标识,用于指示权限授予方,还可以添加目标客户端的客户端标识,用于指示授权申请的发起方。可以理解,由于目标客户端无法获取硬件私钥信息对加密处理得到的第二授权信息进行解密,因此后续申请令牌时,仍可以将该第二授权信息发送给业务节点进行解密处理并进行授权验证。
对比上述两种令牌获取方式,第一种令牌获取方式需要目标客户端先申请一个授权码,再用该授权码获取访问令牌,由于授权码通过前端传送,访问令牌则是储存在后端,且后续所有与作为资源服务器的业务节点的通信都在后端完成,这样的前后端分离模式,可以避免访问令牌泄漏。第二种令牌获取方式则没有授权码这个中间步骤,通过验证发给目标客户端的授权信息与目标客户端返回的授权信息进行比对,可以确定是否向目标客户端颁发访问令牌。实际应用中可以根据需要来选择合适的令牌获取方式,本申请实施例对此不做限定。
步骤S104,接收目标客户端基于授权信息发送的令牌申请请求,将令牌申请请求中的授权信息录入可信执行环境中的对象管理本地合约,通过对象管理本地合约对授权信息进行授权验证,且在授权验证成功时,向目标客户端返回第一访问令牌。
可以理解,目标客户端在业务对象完成登录后取得了相应的授权信息,此时可以通过该授权信息调用可信执行环境中的令牌发放服务接口(也可简称为令牌发放服务),获得读取业务对象资源数据的访问令牌,在此过程中,需要通过可信执行环境中的对象管理本地合约对该授权信息进行授权验证,只有在授权验证成功时,才会向目标客户端返回相应的访问令牌,为了便于后续的区分和说明,本申请实施例可以将这里的访问令牌称为第一访问令牌。其中,第一访问令牌用于通过对象管理本地合约从核心共识网络中的区块链上获取与业务对象相关联的业务资源数据;该核心共识网络独立于业务网络。
可以理解,上述令牌发放服务接口依赖于调用对象管理本地合约,相当于将对象管理本地合约作为最新的数据源,由令牌发放服务接口通过从对象管理本地合约获取到的数据来执行具体的令牌发放逻辑。
结合上述步骤S103中所列举的两种令牌获取方式,下面将分别对其授权验证过程进行阐述。
可选的,在一种实施方式中,业务节点可以通过可信执行环境中的令牌发放服务接口接收目标客户端基于第一授权信息发送的第一令牌申请请求,其中,第一令牌申请请求是目标客户端在通过第一授权信息中的硬件公钥信息对硬件签名信息验签成功时,基于第一授权信息所确定的,也就是说,目标客户端在接收到第一授权信息时,可以通过对第一授权信息进行数据逆映射,从而得到第一授权信息携带的授权码、硬件签名信息以及硬件公钥信息,进而可以通过硬件公钥信息对硬件签名信息进行签名验证,在签名验证成功时,可基于第一授权信息向业务节点发送第一令牌申请请求。可选的,该第一令牌申请请求也可以携带第一授权信息中的授权码,而不再携带硬件签名信息以及硬件公钥信息。
进一步,业务节点可以将第一令牌申请请求中的第一授权信息录入可信执行环境中的对象管理本地合约,此时可以将第一授权信息中携带的授权码作为待验证授权码(即对第一授权信息进行数据逆映射所得到的授权码),可选的,若该待验证授权码是通过对第一授权有效时长和第一访问权限范围进行数据映射所得到的,则可以通过对象管理本地合约从待验证授权码中获取其携带的第一待验证时长和第一待验证权限范围(具体可以对待验证授权码进行数据逆映射),并可将待验证授权码、第一待验证时长以及第一待验证权限范围作为第一请求信息。此外,可以将从可信执行环境中获取到的、此前业务节点为目标客户端配置的授权码、第一授权有效时长以及第一访问权限范围作为第一授权数据信息,进而可以将第一请求信息和第一授权数据信息进行比对。其中,可选的,若第一请求信息和第一授权数据信息比对一致,则可以确定第一授权信息授权验证成功,业务节点可以基于第一授权信息向目标客户端返回第一访问令牌;反之,可选的,若第一请求信息和第一授权数据信息比对不一致,则可以确定第一授权信息授权验证失败,业务节点可以拒绝第一令牌申请请求,并向目标客户端返回第一拒绝提示信息,该第一拒绝提示信息可用于提示目标客户端授权验证失败。
可选的,若该待验证授权码是通过对第一授权有效时长和第一访问权限范围进行哈希运算所得到的,则可以将从可信执行环境中获取到的、此前业务节点为目标客户端配置的授权码作为目标授权码,进而可以将该待验证授权码与目标授权码进行比对,若待验证授权码与目标授权码比对一致,则可以确定第一授权信息授权验证成功,且可以基于第一授权信息向目标客户端返回第一访问令牌。
可选的,当上述授权码为业务节点随机生成的字符串,或者是业务节点基于特定的字符生成规则所生成的字符串时,第一授权信息是此前由业务节点通过对授权码、第一授权有效时长、第一访问权限范围、硬件签名信息以及硬件公钥信息进行数据映射所得到的,则业务节点可以通过对象管理本地合约对第一授权信息进行数据逆映射,从而得到其携带的待验证授权码、第一待验证时长和第一待验证权限范围,类似的,可以将得到的待验证授权码、第一待验证时长和第一待验证权限范围作为第一请求信息,并将该第一请求信息与从对象登录凭证数据库中获取到的第一授权数据信息进行比对,以完成授权验证。
可选的,在另一种实施方式中,业务节点可以通过可信执行环境中的令牌发放服务接口接收目标客户端基于第二授权信息发送的第二令牌申请请求,其中,由于第二授权信息是经过可信执行环境加密过的,因此目标客户端可以将其发回可信执行环境进行验证。进一步,业务节点可以将第二令牌申请请求中的第二授权信息录入可信执行环境中的对象管理本地合约,并通过对象管理本地合约调用可信执行环境的硬件私钥信息对第二授权信息进行解密处理,从而得到第二授权信息携带的第二待验证时长和第二待验证权限范围,此时可以将解密得到的第二待验证时长和第二待验证权限范围作为第二请求信息。此外,可以将从可信执行环境中获取到的、此前业务节点为目标客户端配置的第二授权有效时长和第二访问权限范围作为第二授权数据信息,进而可以将第二请求信息和第二授权数据信息进行比对。可选的,若第二请求信息和第二授权数据信息比对一致,则可以确定第二授权信息授权验证成功,业务节点可以基于第二授权信息向目标客户端返回第一访问令牌;反之,可选的,若第二请求信息和第二授权数据信息比对不一致,则可以确定第二授权信息授权验证失败,业务节点可以拒绝第二令牌申请请求,并向目标客户端返回第二拒绝提示信息,该第二拒绝提示信息可用于提示目标客户端授权验证失败。
其中,可以理解,在上述步骤S103得到为目标客户端配置相应的授权有效时长(如第一授权有效时长或第二授权有效时长)、访问权限范围(如第一访问权限范围或第二访问权限范围)、以及授权码时,业务节点可以将这些数据存储在可信执行环境中的对象登录凭证数据库中,以便后续令牌发放服务接口可以通过调用对象管理本地合约从对象登录凭证数据库中获取这些数据来进行授权验证。或者,可选的,业务节点也可以将这些数据存储在可信执行环境中独立于该对象登录凭证数据库的区域。
其中,可以理解的是,前述第一授权信息和第二授权信息可统称为授权信息,该授权信息可包含为目标客户端配置的授权有效时长和访问权限范围,这里的授权有效时长是指业务对象授权目标客户端访问其资源数据的有效时长(例如,3天);访问权限范围是指业务对象授权目标客户端访问其资源数据的权限范围,该权限范围可以包括权限类型(例如,只读权限)和与权限类型相关联的资源类型(例如,业务对象的头像和昵称可划分为第一资源类型,业务对象的手机号可划分为第二资源类型)。其中,授权有效时长和访问权限范围的具体含义可参见上述对第一授权有效时长和第一访问权限范围的说明,这里不再进行赘述。基于此,可以理解,上述第一访问令牌是在授权信息授权验证成功时,由可信执行环境中的令牌发放服务接口基于授权信息中的授权有效时长和访问权限范围所确定的访问令牌。其中,前述授权有效时长可用于确定第一访问令牌对应的令牌有效时长(例如,5小时),该授权有效时长大于或等于令牌有效时长;类似的,前述访问权限范围可用于确定第一访问令牌对应的业务访问权限(例如,只读具有第一资源类型的资源数据,即业务对象的头像和昵称),该业务访问权限为位于访问权限范围内的访问权限。也就是说,访问令牌有其时效性和权限范围,可以由业务对象登录时授权指定,例如,使用客户端D1(即业务客户端,例如即时通信客户端)所提供的服务的用户E可以授权另一个客户端D2(即目标客户端,例如视频客户端)只读其用户昵称、头像和手机号,也可以授权该客户端D2只读其昵称,不授权手机号。
可以理解的是,在实际业务中,授权信息对应的授权有效时长一般要大于访问令牌对应的令牌有效时长,以授权码为例,与访问令牌相比,授权码在相对较长的时间段内都有效,因此,在授权码还未过期时,目标客户端都可以使用该授权码去申请不同的访问令牌,以便从区块链上读取与业务对象相关联的各种资源数据。例如,由于访问令牌对应的令牌有效时长相对较短,很容易失效,因此目标客户端可以在不同时刻使用授权码申请不同的访问令牌,而不仅限于用户登录时读取,比如,在t1时刻,前述客户端D2使用授权码F申请了访问令牌T1,那么在该访问令牌T1即将失效的t2时刻,该客户端D2又可以使用授权码F申请新的访问令牌T2,从而可以使得客户端D2在较长时间内均可以具备访问相关资源数据的权限,从而维护其业务的正常执行。又例如,目标客户端可以针对不同的资源类型来申请不同的访问令牌,比如,前述客户端D2可以使用授权码F申请访问令牌T3,用以读取用户E具有第一资源类型的资源数据(如用户E的头像和昵称),类似的,客户端D2还可以使用授权码F申请访问令牌T4,用以读取用户E具有第二资源类型的资源数据(如用户E的手机号)。
可以理解,目标客户端在获取到上述第一访问令牌时,可以通过该第一访问令牌从区块链上获取与业务对象相关联的业务资源数据,其具体过程可以为:作为资源服务器的业务节点可以接收目标客户端基于上述第一访问令牌发送的业务资源访问请求,进而可以将业务资源访问请求中的第一访问令牌录入对象管理本地合约,并通过对象管理本地合约对第一访问令牌进行合法性验证(可理解为对第一访问令牌进行鉴权),以得到合法性验证结果。在该合法性验证指示第一访问令牌为合法令牌时,可以通过对象管理本地合约,从存储在可信执行环境的资源数据中获取作为合法令牌的第一访问令牌所请求的资源数据,并将获取到的资源数据作为与业务对象相关联的业务资源数据,随后可以将该业务资源数据返回至目标客户端。其中,可信执行环境中所存储的资源数据是从区块链上同步来的与对象管理合约相关联的数据,可作为前述节点业务数据存储在可信执行环境中以供外部应用读取,具体来说可以包括在对象管理合约中进行身份注册的多个注册对象(如前述业务对象)相关联的资源数据。
其中,目标客户端可以通过第一访问令牌调用可信执行环境中的信息读取服务接口(也可称为用户信息读取服务),读取所需要的业务资源数据。与上述令牌发放服务接口类似,这里的信息读取服务接口也依赖于调用对象管理本地合约。基于此,业务节点对第一访问令牌进行合法性验证的具体过程可以为:通过可信执行环境中的信息读取服务接口接收目标客户端基于第一访问令牌发送的业务资源访问请求,并将该业务资源访问请求中的第一访问令牌录入对象管理本地合约;随后,可以通过对象管理本地合约,从可信执行环境中的对象登录凭证数据库中获取基于前述授权信息为目标客户端配置的访问令牌,将获取到的访问令牌作为目标访问令牌。可以理解,业务节点可以在基于该授权信息生成目标客户端对应的访问令牌时,将该访问令牌作为第一访问令牌返回给目标客户端,此外,业务节点还可将该访问令牌转发到共识节点进行上链,并在业务节点进行数据清分或需要对第一访问令牌进行合法性验证时,从区块链上同步到该访问令牌,并存储至对象登录凭证数据库;或者,可选的,出于对可信执行环境的信任,业务节点也可以不对该访问令牌进行上链处理,而是直接存储至对象登录凭证数据库以供后续使用,为便于区分,可以将存储在登录凭证数据库中的该访问令牌作为目标访问令牌。
进一步地,业务节点可以将目标访问令牌与第一访问令牌进行比对,可选的,若目标访问令牌与第一访问令牌比对一致,则可以获取第一访问令牌对应的令牌使用时长和令牌有效时长,可以理解,在该令牌使用时长小于令牌有效时长时,表示第一访问令牌尚未失效,此时可以确定第一访问令牌为合法令牌,进而可以将第一访问令牌为合法令牌时的验证结果作为合法性验证结果。可选的,若目标访问令牌与第一访问令牌比对不一致,则可以确定第一访问令牌为非法令牌,此时业务节点可以拒绝目标客户端的业务资源访问请求。
其中,可以理解,业务资源访问请求中携带有业务对象的对象身份标识,且第一访问令牌中包含令牌有效时长和业务访问权限,那么在确定第一访问令牌为合法令牌时,业务节点可以基于该对象身份标识、令牌有效时长和业务访问权限等信息来获取目标客户端请求的业务资源数据,其具体过程可以为:业务节点可以通过可信执行环境中的信息读取服务接口调用对象管理本地合约,以便在可信执行环境所存储的资源数据中查找与该对象身份标识相关联的资源数据,且可以将查找到的与该对象身份标识相关联的资源数据作为对象资源数据(即与业务对象相关联的资源数据);进一步,可以获取作为合法令牌的第一访问令牌中的令牌有效时长和业务访问权限,这样,在令牌有效时长内,业务节点可以从上述对象资源数据中获取业务访问权限所指示的资源数据作为与业务对象相关联的业务资源数据,最终可通过信息读取服务接口将该业务资源数据返回至目标客户端。
此外,本申请实施例还支持目标客户端请求更新已有的访问令牌,具体的,业务节点在向目标客户端返回第一访问令牌时,可以同时向目标客户端返回用于更新该第一访问令牌的更新令牌。当目标客户端希望对该第一访问令牌进行更新时(例如,在第一访问令牌到期前),可以基于该更新令牌向业务节点发送令牌更新请求;业务节点接收到该令牌更新请求时,可以将该令牌更新请求中的更新令牌录入对象管理本地合约,并通过对象管理本地合约对更新令牌进行验证,且在验证成功时,可以向目标客户端返回第二访问令牌,这里的第二访问令牌为第一访问令牌之后的访问令牌。
其中,业务节点可以验证该更新令牌是否可用于更新第一访问令牌,具体的,可以获取该更新令牌的更新使用时长和更新有效时长,在更新使用时长小于更新有效时长时,可确定该更新令牌仍在有效期,可用于更新第一访问令牌。进一步地,由于在生成第一访问令牌时,已经将相应的授权信息录入对象管理本地合约,并且通过了授权验证成功,因此在更新第一访问令牌时,可以不用再对该授权信息进行重复授权验证,而只要去验证该授权信息是否过期即可,例如,可以获取该授权信息对应的授权使用时长和授权有效时长,在授权使用时长小于授权有效时长时,可确定该授权信息仍在有效期(即为有效授权信息),因此可以基于该授权信息向目标客户端返回第二访问令牌。
上述可知,本申请实施例提供了一种基于可信执行环境的分布式对象身份管理***用于登录服务的方案,在该对象身份管理***中,由业务网络中的业务节点执行对业务对象登录授权的验证以及令牌派发等逻辑过程,相当于将业务节点作为OAuth2中的身份验证服务器和资源服务器,从而实现了分布式的OAuth2登录服务。另外,由于该业务节点运行在可信执行环境中,且该可信执行环境可以被远程认证,因此保证了业务节点执行逻辑的可信,并可以将登录服务和信任源解耦,从而去除了中心化身份管理带来的不可信问题。此外,本申请实施例还将可信执行环境和区块链进行结合,通过可信执行环境提供安全的身份验证服务,而无需信任对应业务节点的运行者,且通过不可被篡改的区块链管理业务对象的相关信息,可以实现无需信任的去中心化安全身份验证服务,且可以提升对象身份管理***的安全性和可靠性。
进一步的,请参见图5,图5是本申请实施例提供的一种基于可信执行环境的数据处理方法的流程示意图。如图5所示,该方法可以由目标客户端执行,比如,该目标客户端可以为运行在上述图2a所示的业务终端20A中的任意一个客户端,且与该目标客户端相关联的业务网络中的业务节点运行在可信执行环境中。该方法具体可以包括以下步骤S201-步骤S203:
步骤S201,向业务节点发送远程认证请求;远程认证请求用于指示业务节点对可信执行环境进行远程认证,且在远程认证成功时,与目标客户端建立通信连接;
可以理解,为了确保业务节点的可信执行环境的有效性以及运行在其中的可信应用的一致性,目标客户端在首次与该可信执行环境建立通信连接之前,需要与该可信执行环境进行远程认证,其中,目标客户端可以先向业务节点发送远程认证请求,从而触发业务节点对该可信执行环境进行远程认证,且在远程认证成功时,与目标客户端建立通信连接,其具体实现过程可以参见上述图3所对应实施例中的步骤S101,这里不再进行赘述。
步骤S202,基于通信连接向业务节点发送第一授权申请请求;
可以理解,在目标客户端访问业务前端时,可以向该业务前端发送第二授权申请请求;这里的第二授权申请请求用于指示业务前端获取与业务对象相关联的对象密钥管理工具;该对象密钥管理工具用于通过业务对象的对象私钥信息对第二授权申请请求进行签名,且可将得到的业务对象的授权签名信息和对象私钥信息对应的对象公钥信息返回给目标客户端;其中,对象公钥信息和对象私钥信息均由对象密钥管理工具所确定。
进一步地,目标客户端在接收到上述授权签名信息和对象公钥信息时,可以获取业务对象的对象身份标识,进而可以基于获取到的对象身份标识、授权签名信息以及对象公钥信息生成第一授权申请请求,且可以基于上述通信连接将第一授权申请请求发送至业务节点,其中,第一授权申请请求为第二授权申请请求之后的授权申请请求。
其中,上述第一授权申请请求中携带的授权签名信息可用于指示业务节点对业务对象进行身份校验,且在身份校验成功时,向目标客户端返回授权信息,其具体实现过程可以参见上述图3所对应实施例中的步骤S102-步骤S103,这里不再进行赘述。
步骤S203,基于授权信息生成令牌申请请求,将令牌申请请求发送至业务节点,以使业务节点将令牌申请请求中的授权信息录入可信执行环境中的对象管理本地合约;
可以理解,在接收到业务节点返回的授权信息后,目标客户端可以基于该授权信息生成令牌申请请求,并通过上述通信连接将该令牌申请请求发送至业务节点,相应的,业务节点可以将令牌申请请求中的授权信息录入可信执行环境中的对象管理本地合约,其中,该对象管理本地合约可用于对前述授权信息进行授权验证,且在授权验证成功时,用于指示业务节点向目标客户端返回第一访问令牌;这里的第一访问令牌可用于通过对象管理本地合约从核心共识网络中的区块链上获取与业务对象相关联的业务资源数据;核心共识网络独立于业务网络。该步骤的具体实现过程可以参见上述图3所对应实施例中的步骤S104,这里不再进行赘述。
此外,目标客户端还可以基于上述第一访问令牌向业务节点发送业务资源访问请求;该业务资源访问请求用于指示业务节点通过对象管理本地合约对业务资源访问请求中的第一访问令牌进行合法性验证,且在确定第一访问令牌为合法令牌时,通过对象管理本地合约从区块链上获取与业务对象相关联的业务资源数据。该步骤的具体实现过程可以参见上述图3所对应实施例中的步骤S104,这里不再进行赘述。最终,目标客户端可以基于业务节点返回的业务资源数据,执行目标业务。这里的目标业务可以指目标客户端所能够执行的任意业务,这里对目标业务的具体内容不做限定。例如,当目标客户端所在的业务终端作为业务节点接入区块链***时,目标客户端可以执行相关的交易业务(如票据业务、文件业务等)。又例如,这里的目标业务可以为与目标客户端的类型相关的业务,例如,当目标客户端为购物客户端时,可以基于业务节点返回的业务对象消费时所产生的电子票据(或该电子票据中部分授权可见的票据信息),为业务对象提供个性化广告业务;又或者,当目标客户端为短视频客户端时,可以基于业务节点返回的业务对象在其他客户端(如即时通信客户端)上的通讯录,为业务对象提供好友推荐业务;又或者,目标客户端仅使用用户相关信息来完成业务登录,随后就可以运行本身的业务逻辑,例如通过即时通信客户端授权登录短视频客户端后,业务对象就可以使用该短视频客户端来观看短视频内容。
上述可知,本申请实施例提供了一种新颖的基于TEE的区块链OAuth2身份验证服务器方案,不同于传统的中心化的对象身份管理***,本申请实施例在区块链上管理业务对象的相关信息(如业务对象的身份权限和相关资源数据等),并将业务节点(或SPV节点)作为分布式OAuth2中的验证服务器和资源服务器(可统称为OAuth2服务器),同时为了将中心化的登录服务和信任源解耦,实现真正的去中心化身份验证和授权,本申请实施例结合了可信执行环境(TEE)作为身份认证服务环境,而可信执行环境本身可以在链上被认证,使得任何第三方应用都可以验证并使用该OAuth2服务器,而无需信任验证服务器的运行者,以及防止验证服务器运行者进行作恶的风险。
为便于理解,进一步的,请参见图6,图6是本申请实施例提供的一种基于可信执行环境的去中心化身份验证的场景示意图。如图6所示,这里的第三方应用可作为前述目标客户端,业务节点60a和业务节点60b均为业务网络中的业务节点,且业务节点60a和业务节点60b均作为验证服务器运行在可信执行环境(即TEE)中,可以理解,在业务网络中可以同时部署有多个作为验证服务器的业务节点(也可称为TEE SPV节点),为便于说明,本申请实施例仅以业务节点60a和业务节点60b为例进行说明,这里对作为验证服务器的业务节点的数量不做限定。可以理解,在业务网络中,每个作为验证服务器的业务节点都是对等的,每一个验证服务器都可以独立地完成用户登录和信息读取的任务,且彼此之间的信息和状态是不互通的(TEE服务之间数据是相互隔离保密的,业务节点状态由核心共识网络来维护),从而可以提升整个对象身份管理***的容错多活能力。如图6所示,除了业务节点本身的账本同步功能外,作为验证服务器的业务节点60a上可以部署用户管理本地合约(即前述对象管理本地合约),该用户管理本地合约在核心共识网络中发布,同步到TEE SPV节点中执行,主要封装了验证用户状态、接受用户登录验证处理等功能;在进行登录和验证操作时,依赖用户登录凭证数据库(即对象登录凭证数据库)进行信息读取和验证。用户登录凭证数据库(即用户登录凭证DB)是基于从核心共识网络中清分下来的数据,在业务节点本地所构建出来的数据库,便于对用户凭证和状态的查询,可以理解为,用户登录凭证数据库是存储着所有用户的身份权限的数据库。由于用户登录凭证数据库是启动在TEE中,其数据是对外部是不可见的。SPV账本数据(即前述节点业务数据)也存储在TEE中,可从中读取从核心共识网络的区块链上同步过来的资源数据。令牌发放服务(即前述令牌发放服务接口)和用户信息读取服务(即前述信息读取服务接口)则是TEE提供的对外接口,其中,令牌发放服务可以为第三方应用发放访问令牌,用户信息读取服务则可以为第三方应用读取需要的用户信息,两个服务接口都依赖于调用用户管理本地合约。可以理解,业务节点60b的内部结构与业务节点60a类似,因此不再进行赘述。
如图6所示的核心共识网络中可以部署多个共识节点,具体包括共识节点61a、共识节点61b、共识节点61c、…、共识节点61n,这里对共识节点的数量不做限定。可以看到,每个共识节点内部均可以部署用户管理合约(即前述对象管理合约)和可信环境管理合约(具体为TEE服务管理合约),其中,用户管理合约用于管理用户信息以及用户注册、冻结、权限设计等,可信环境管理合约则用户管理验证服务器的可信执行环境。此外,核心共识网络对应的核心共识网络入口是指网络接入点,可用于隔离核心共识网络和业务节点(包括作为验证服务器的业务节点),可起到负载均衡的作用。
可以理解,第三方应用可以调用作为验证服务器的业务节点完成链上管理的用户登录,获得用户身份后,可执行自己的业务。这里以采用授权码的授权方式为例对去中心化的身份验证过程进行说明:具体来说,当第三方应用向某个用户(即前述业务对象)发起授权申请(即前述第二授权申请请求)时,可以迅速从第三方应用跳转到用户登录前端(即前述业务前端),此时由用户与该用户登录前端进行交互,进行登录操作,需要注意的是,该用户登录前端是没有后台服务的。进一步,该用户登录前端可以帮助用户唤起自身的去中心化钱包(即前述对象密钥管理工具),以对第三方应用的授权申请进行区块链交易签名,从而可以向第三方应用返回授权签名信息S。
进一步地,在第三方应用与业务节点60a建立通信连接后,第三方应用可以基于该授权签名信息S向业务节点60a申请授权码,此时业务节点60a可以基于该授权签名信息S对用户进行身份校验,且在身份校验成功时,可以向第三方应用返回授权码G,同时用户完成登录。随后,第三方应用可以通过授权码G来调用令牌发放服务,以申请获取用于访问用户信息的访问令牌。可以理解,业务节点60a可以通过用户管理本地合约对授权码G进行验证,且在验证成功时,向第三方应用返回一个访问令牌T。随后,第三方应用就可以以访问令牌T为凭证,向用户信息读取服务处获取访问令牌T对应的资源数据(即前述业务资源数据)。去中心化身份验证的具体实现过程可以参见上述图3和图5所对应的实施例,这里不再进行赘述。
可以理解,在本申请实施例中,访问令牌(token)与密码(password)的作用是一样的,都可以进入***来获取用户资源数据,但是存在三点差异:(1)访问令牌是短期的,到期会自动失效,用户自己无法修改;密码一般长期有效,用户不修改,就不会发生变化。(2)访问令牌可以被数据所有者(即用户)撤销,此时会立即失效;而密码一般不允许被他人撤销。(3)访问令牌有权限范围(scope),对于网络服务来说,只读令牌就比读写令牌更安全;密码则一般是完整权限。上面这些设计,保证了访问令牌既可以让第三方应用获得权限,同时又随时可控,不会危及***安全。需要注意,只要知道了访问令牌,就能进入***,***一般不会再次确认身份,所以访问令牌必须保密,泄漏令牌与泄漏密码的后果是一样的。因此,访问令牌的有效期一般都设置得很短。
上述可知,作为验证服务器的业务节点运行在可信执行环境中,且该可信执行环境是经过远程认证的,由此保证可信执行环境中的执行逻辑是可靠的;通过业务节点的账本同步功能可以同步链上信息,由于区块链本身是可靠的,那么通过可信执行环境从链上同步下来的数据和状态也是可靠的,这样,可以保证在用户授权签名后,从可信执行环境中读取到的相关资源数据就是可靠的。
由此可见,本申请实施例设计了一种基TEE的分布式用户身份管理***用于OAuth2登录的方案,通过SPV作为OAuth2中的资源服务器和验证服务器,实现了分布式的OAuth2登录服务,而TEE技术保证了验证服务器执行逻辑的可信(包括对于链上账本数据和合约数据的同步,以及对用户登录授权的验证和令牌派发等的过程),去除了中心化身份管理带来的不可信问题,用户通过自己的钱包(即对象密钥管理工具)进行有限授权,其行为无法被仿照和复制。同时多个TEE可以各自独立被作为登录服务器使用,解决了登录服务的高可用和无依赖需求,还可以在复杂异构网络中,各自独立实现使用分布式链上身份进行登录管理的状态(如内网的登录***和公网的登录***分隔)。
进一步的,请参见图7,图7是本申请实施例提供的一种基于可信执行环境的数据处理方法的交互流程示意图。如图7所示,该方法可以由业务网络中的业务节点和目标客户端共同执行,且该业务节点可作为验证服务器和资源服务器运行在可信执行环境中。该方法具体可以包括以下步骤:
步骤S301,目标客户端向业务节点发送远程认证请求;
步骤S302,业务节点基于远程认证请求对业务节点的可信执行环境进行远程认证,且在远程认证成功时,与目标客户端建立通信连接;
步骤S303,目标客户端基于通信连接向业务节点发送第一授权申请请求;第一授权申请请求中携带业务对象的授权签名信息;授权签名信息为目标客户端所访问的业务前端中的业务对象的签名信息;
步骤S304,业务节点基于授权签名信息对业务对象进行身份校验;
步骤S305,在身份校验成功时,业务节点向目标客户端返回授权信息;
步骤S306,目标客户端基于授权信息向业务节点发送令牌申请请求;
步骤S307,业务节点将令牌申请请求中的授权信息录入可信执行环境中的对象管理本地合约,通过对象管理本地合约对授权信息进行授权验证;
步骤S308,在授权验证成功时,业务节点向目标客户端返回第一访问令牌;
步骤S309,目标客户端基于第一访问令牌向业务节点发送业务资源访问请求;
步骤S310,业务节点将业务资源访问请求中的第一访问令牌录入对象管理本地合约,通过对象管理本地合约对第一访问令牌进行合法性验证,得到合法性验证结果;
步骤S311,在合法性验证指示第一访问令牌为合法令牌时,业务节点通过对象管理本地合约从存储在可信执行环境的资源数据中获取作为合法令牌的第一访问令牌所请求的资源数据,将获取到的资源数据作为与业务对象相关联的业务资源数据,且将业务资源数据返回至目标客户端;
步骤S312,目标客户端基于业务节点返回的业务资源数据,执行目标业务。
上述步骤的具体实现过程可以参见上述图3所对应的实施例以及上述图5所对应的实施例,这里不再进行赘述。此外,对采用相同方法的有益效果描述,也不再进行赘述。
请参见图8,是本申请实施例提供的一种基于可信执行环境的数据处理装置的结构示意图。如图8所示,基于可信执行环境的数据处理装置1可应用于业务节点中,且该业务节点运行在可信执行环境中;该业务节点可以为业务网络(例如,上述业务网络100a)中的任意一个区块链节点,例如,该业务节点可以为上述图1所对应实施例中的业务节点110a。应当理解,该基于可信执行环境的数据处理装置1可以是运行于区块链节点(比如,前述业务节点110a)的一个计算机程序(包括程序代码),例如该基于可信执行环境的数据处理装置1为一个应用软件;可以理解的是,该基于可信执行环境的数据处理装置1可以用于执行本申请实施例提供的基于可信执行环境的数据处理方法中的相应步骤。如图8所示,该基于可信执行环境的数据处理装置1可以包括:远程认证模块11、请求获取模块12、身份校验模块13、令牌发放模块14、令牌验证模块15、资源获取模块16、令牌更新模块17;
远程认证模块11,用于获取目标客户端发送的远程认证请求,基于远程认证请求对业务节点的可信执行环境进行远程认证,且在远程认证成功时,与目标客户端建立通信连接;
其中,核心共识网络中的区块链上部署有用于管理可信执行环境的可信环境管理合约;
远程认证模块11可以包括:信息获取单元111、度量值获取单元112、度量值比对单元113;
信息获取单元111,用于基于远程认证请求获取与可信执行环境相关联的待验证关键信息,通过与业务节点相关联的中继服务设备向远程认证服务器发送待验证关键信息,以使远程认证服务器基于待验证关键信息对可信执行环境进行有效性验证,且在有效性验证成功时,向中继服务设备返回认证验证报告;
度量值获取单元112,用于在接收到中继服务设备基于认证验证报告返回的认证成功响应信息时,确定可信执行环境为安全环境,且获取作为安全环境的可信执行环境中所部署的可信应用的应用度量值作为本地应用度量值;通过可信执行环境中的对象管理本地合约,将从区块链上的可信环境管理合约中获取到的可信应用对应的应用度量值作为目标应用度量值;
度量值比对单元113,用于将本地应用度量值与目标应用度量值进行比对,且在本地应用度量值与目标应用度量值比对一致时,确定可信执行环境远程认证成功,与目标客户端建立通信连接。
其中,信息获取单元111、度量值获取单元112、度量值比对单元113的具体实现方式,可以参见上述图3所对应实施例中对步骤S101的描述,这里将不再继续进行赘述。
请求获取模块12,用于基于通信连接获取目标客户端发送的第一授权申请请求;第一授权申请请求中携带业务对象的授权签名信息;授权签名信息为目标客户端所访问的业务前端中的业务对象的签名信息;
身份校验模块13,用于基于授权签名信息对业务对象进行身份校验,且在身份校验成功时,向目标客户端返回授权信息;
其中,第一授权申请请求中包含业务对象的授权签名信息、业务对象的对象公钥信息以及业务对象的对象身份标识;授权签名信息是在业务对象通过业务前端进行登录操作时,由与业务对象相关联的对象密钥管理工具通过对象公钥信息对应的对象私钥信息,对目标客户端发起的第二授权申请请求进行签名后所得到的;第二授权申请请求为第一授权申请请求之前的授权申请请求;对象公钥信息和对象私钥信息均由对象密钥管理工具所确定;可信执行环境中构建有对象登录凭证数据库;对象登录凭证数据库用于存储从区块链上的对象管理合约中同步来的注册对象的对象注册信息,注册对象的对象注册信息中包含注册对象的身份标识;
身份校验模块13可以包括:签名验证单元131、对象查询单元132、授权返回单元133;
签名验证单元131,用于从第一授权申请请求中获取授权签名信息和对象公钥信息,通过对象公钥信息对对象签名信息进行签名验证,得到签名验证结果;
对象查询单元132,用于在签名验证结果指示签名验证成功时,通过可信执行环境中的对象管理本地合约,在注册对象的对象注册信息中查找与对象身份标识相同的身份标识,且在查找到与对象身份标识相同的身份标识时,确定业务对象为注册对象,将业务对象为注册对象时的身份校验成功结果作为身份校验结果;
授权返回单元133,用于基于身份校验结果向目标客户端返回授权信息。
在一种实施方式中,授权返回单元133可以包括:第一登录配置子单元1331、授权码配置子单元1332、第一授权返回子单元1333;
第一登录配置子单元1331,用于在身份校验结果指示身份校验成功时,通过对象管理本地合约将业务对象的业务状态配置为业务登录状态,且基于业务登录状态为目标客户端配置第一授权有效时长和第一访问权限范围;
授权码配置子单元1332,用于基于第一授权有效时长和第一访问权限范围为目标客户端配置授权码,通过可信执行环境的硬件私钥信息对授权码进行签名,得到硬件签名信息;
第一授权返回子单元1333,用于获取硬件私钥信息对应的硬件公钥信息,对授权码、硬件签名信息以及硬件公钥信息进行数据映射,得到第一授权信息,将第一授权信息返回至目标客户端。
在一种实施方式中,授权返回单元133可以包括:第二登录配置子单元1334、第二授权返回子单元1335;
第二登录配置子单元1334,用于在身份校验结果指示身份校验成功时,通过对象管理本地合约将业务对象的业务状态配置为业务登录状态,且基于业务登录状态为目标客户端配置第二授权有效时长和第二访问权限范围;
第二授权返回子单元1335,用于基于可信执行环境的硬件公钥信息对第二授权有效时长和第二访问权限范围进行加密处理,得到第二授权信息,将第二授权信息返回至目标客户端。
其中,第一登录配置子单元1331、授权码配置子单元1332、第一授权返回子单元1333、第二登录配置子单元1334、第二授权返回子单元1335的具体实现方式,可以参见上述图3所对应实施例中对步骤S103的描述,这里将不再继续进行赘述。
其中,签名验证单元131、对象查询单元132、授权返回单元133的具体实现方式,可以参见上述图3所对应实施例中对步骤S103的描述,这里将不再继续进行赘述。
令牌发放模块14,用于接收目标客户端基于授权信息发送的令牌申请请求,将令牌申请请求中的授权信息录入可信执行环境中的对象管理本地合约,通过对象管理本地合约对授权信息进行授权验证,且在授权验证成功时,向目标客户端返回第一访问令牌;第一访问令牌用于通过对象管理本地合约从核心共识网络中的区块链上获取与业务对象相关联的业务资源数据;核心共识网络独立于业务网络。
在一种实施方式中,令牌发放模块14可以包括:第一请求接收单元141、第一信息比对单元142、第一令牌返回单元143;
第一请求接收单元141,用于通过可信执行环境中的令牌发放服务接口接收目标客户端基于第一授权信息发送的第一令牌申请请求;第一令牌申请请求是目标客户端在通过第一授权信息中的硬件公钥信息对硬件签名信息验签成功时,基于第一授权信息所确定的;
第一信息比对单元142,用于将第一令牌申请请求中的第一授权信息录入可信执行环境中的对象管理本地合约,且将第一授权信息中携带的授权码作为待验证授权码;通过对象管理本地合约从待验证授权码中获取第一待验证时长和第一待验证权限范围,将待验证授权码、第一待验证时长以及第一待验证权限范围作为第一请求信息;且用于将从可信执行环境中获取到的为目标客户端配置的授权码、第一授权有效时长以及第一访问权限范围作为第一授权数据信息,将第一请求信息和第一授权数据信息进行比对;
第一令牌返回单元143,用于若第一请求信息和第一授权数据信息比对一致,则确定第一授权信息授权验证成功,基于第一授权信息向目标客户端返回第一访问令牌。
在一种实施方式中,令牌发放模块14可以包括:第二请求接收单元144、第二信息比对单元145、第二令牌返回单元146;
第二请求接收单元144,用于通过可信执行环境中的令牌发放服务接口接收目标客户端基于第二授权信息发送的第二令牌申请请求;
第二信息比对单元145,用于将第二令牌申请请求中的第二授权信息录入可信执行环境中的对象管理本地合约,通过对象管理本地合约调用可信执行环境的硬件私钥信息对第二授权信息进行解密处理,得到第二待验证时长和第二待验证权限范围,且将解密得到的第二待验证时长和第二待验证权限范围作为第二请求信息;且用于将从可信执行环境中获取到的为目标客户端配置的第二授权有效时长和第二访问权限范围作为第二授权数据信息,将第二请求信息和第二授权数据信息进行比对;
第二令牌返回单元146,用于若第二请求信息和第二授权数据信息比对一致,则确定第二授权信息授权验证成功,基于第二授权信息向目标客户端返回第一访问令牌。
其中,第一请求接收单元141、第一信息比对单元142、第一令牌返回单元143、第二请求接收单元144、第二信息比对单元145、第二令牌返回单元146的具体实现方式,可以参见上述图3所对应实施例中对步骤S104的描述,这里将不再继续进行赘述。
其中,授权信息包含为目标客户端配置的授权有效时长和访问权限范围;第一访问令牌是在授权信息授权验证成功时,由可信执行环境中的令牌发放服务接口基于授权信息中的授权有效时长和访问权限范围所确定的访问令牌;授权有效时长用于确定第一访问令牌对应的令牌有效时长;授权有效时长大于或等于令牌有效时长;访问权限范围用于确定第一访问令牌对应的业务访问权限;业务访问权限为位于访问权限范围内的访问权限。
令牌验证模块15,用于接收目标客户端基于第一访问令牌发送的业务资源访问请求,将业务资源访问请求中的第一访问令牌录入对象管理本地合约,通过对象管理本地合约对第一访问令牌进行合法性验证,得到合法性验证结果;
其中,令牌验证模块15可以包括:第三请求接收单元151、令牌比对单元152、时长验证单元153;
第三请求接收单元151,用于通过可信执行环境中的信息读取服务接口接收目标客户端基于第一访问令牌发送的业务资源访问请求,将业务资源访问请求中的第一访问令牌录入对象管理本地合约;
令牌比对单元152,用于通过对象管理本地合约,从可信执行环境中的对象登录凭证数据库中获取基于授权信息为目标客户端配置的访问令牌,将获取到的访问令牌作为目标访问令牌,且将目标访问令牌与第一访问令牌进行比对;
时长验证单元153,用于若目标访问令牌与第一访问令牌比对一致,则获取第一访问令牌对应的令牌使用时长和令牌有效时长,且在令牌使用时长小于令牌有效时长时,确定第一访问令牌为合法令牌,将第一访问令牌为合法令牌时的验证结果作为合法性验证结果。
其中,第三请求接收单元151、令牌比对单元152、时长验证单元153的具体实现方式,可以参见上述图3所对应实施例中对步骤S104的描述,这里将不再继续进行赘述。
资源获取模块16,用于在合法性验证指示第一访问令牌为合法令牌时,通过对象管理本地合约从存储在可信执行环境的资源数据中获取作为合法令牌的第一访问令牌所请求的资源数据,将获取到的资源数据作为与业务对象相关联的业务资源数据,且将业务资源数据返回至目标客户端;可信执行环境中所存储的资源数据是从区块链上同步来的与对象管理合约相关联的数据。
其中,业务资源访问请求中携带业务对象的对象身份标识;第一访问令牌中包含令牌有效时长和业务访问权限;
资源获取模块16可以包括:第一资源获取单元161、第二资源获取单元162;
第一资源获取单元161,用于通过可信执行环境中的信息读取服务接口调用对象管理本地合约,在可信执行环境所存储的资源数据中查找与对象身份标识相关联的资源数据,且将查找到的与对象身份标识相关联的资源数据作为对象资源数据;
第二资源获取单元162,用于获取作为合法令牌的第一访问令牌中的令牌有效时长和业务访问权限,在令牌有效时长内,从对象资源数据中获取业务访问权限所指示的资源数据作为与业务对象相关联的业务资源数据,通过信息读取服务接口将业务资源数据返回至目标客户端。
其中,第一资源获取单元161、第二资源获取单元162的具体实现方式,可以参见上述图3所对应实施例中对步骤S104的描述,这里将不再继续进行赘述。
令牌更新模块17,用于在向目标客户端返回第一访问令牌时,向目标客户端返回用于更新第一访问令牌的更新令牌;接收目标客户端基于更新令牌发送的令牌更新请求,将令牌更新请求中的更新令牌录入对象管理本地合约,通过对象管理本地合约对更新令牌进行验证,且在验证成功时,向目标客户端返回第二访问令牌。
其中,远程认证模块11、请求获取模块12、身份校验模块13、令牌发放模块14、令牌验证模块15、资源获取模块16、令牌更新模块17的具体实现方式,可以参见上述图3所对应实施例中对步骤S101-步骤S104的描述,这里将不再继续进行赘述。应当理解,对采用相同方法所得到的有益效果描述,也不再进行赘述。
请参见图9,是本申请实施例提供的一种基于可信执行环境的数据处理装置的结构示意图。如图9所示,基于可信执行环境的数据处理装置2可应用于目标客户端中,且与该目标客户端相关联的业务网络中的业务节点运行在可信执行环境中;该目标客户端可以为业务终端(例如,上述图2a所示的业务终端20A)上运行的任意一个客户端。应当理解,该基于可信执行环境的数据处理装置2可以是运行于业务终端(比如,前述业务终端20A)的一个计算机程序(包括程序代码),例如该基于可信执行环境的数据处理装置2为一个应用软件;可以理解的是,该基于可信执行环境的数据处理装置2可以用于执行本申请实施例提供的基于可信执行环境的数据处理方法中的相应步骤。如图9所示,该基于可信执行环境的数据处理装置2可以包括:认证请求模块21、授权申请模块22、令牌申请模块23、资源访问模块24、业务执行模块25;
认证请求模块21,用于向业务节点发送远程认证请求;远程认证请求用于指示业务节点对可信执行环境进行远程认证,且在远程认证成功时,与目标客户端建立通信连接;
授权申请模块22,用于基于通信连接向业务节点发送第一授权申请请求;第一授权申请请求中携带业务对象的授权签名信息;授权签名信息为目标客户端所访问的业务前端中的业务对象的签名信息;授权签名信息用于指示业务节点对业务对象进行身份校验,且在身份校验成功时,向目标客户端返回授权信息;
其中,授权申请模块22可以包括:第一授权申请单元221、第二授权申请单元222;
第一授权申请单元221,用于在目标客户端访问业务前端时,向业务前端发送第二授权申请请求;第二授权申请请求用于指示业务前端获取与业务对象相关联的对象密钥管理工具;对象密钥管理工具用于通过业务对象的对象私钥信息对第二授权申请请求进行签名,且将得到的业务对象的授权签名信息和对象私钥信息对应的对象公钥信息返回给目标客户端;对象公钥信息和对象私钥信息均由对象密钥管理工具所确定;
第二授权申请单元222,用于获取业务对象的对象身份标识,基于对象身份标识、授权签名信息以及对象公钥信息生成第一授权申请请求,且基于通信连接将第一授权申请请求发送至业务节点;第一授权申请请求为第二授权申请请求之后的授权申请请求。
其中,第一授权申请单元221、第二授权申请单元222的具体实现方式,可以参见上述图5所对应实施例中对步骤S202的描述,这里将不再继续进行赘述。
令牌申请模块23,用于基于授权信息生成令牌申请请求,将令牌申请请求发送至业务节点,以使业务节点将令牌申请请求中的授权信息录入可信执行环境中的对象管理本地合约;对象管理本地合约用于对授权信息进行授权验证,且在授权验证成功时,用于指示业务节点向目标客户端返回第一访问令牌;第一访问令牌用于通过对象管理本地合约从核心共识网络中的区块链上获取与业务对象相关联的业务资源数据;核心共识网络独立于业务网络;
资源访问模块24,用于基于第一访问令牌向业务节点发送业务资源访问请求;业务资源访问请求用于指示业务节点通过对象管理本地合约对业务资源访问请求中的第一访问令牌进行合法性验证,且在确定第一访问令牌为合法令牌时,通过对象管理本地合约从区块链上获取与业务对象相关联的业务资源数据;
业务执行模块25,用于基于业务节点返回的业务资源数据,执行目标业务。
其中,认证请求模块21、授权申请模块22、令牌申请模块23、资源访问模块24、业务执行模块25的具体实现方式,可以参见上述图5所对应实施例中对步骤S201-步骤S203的描述,这里将不再继续进行赘述。应当理解,对采用相同方法所得到的有益效果描述,也不再进行赘述。
请参见图10,是本申请实施例提供的一种计算机设备的结构示意图。如图10所示,该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机可读存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及设备控制应用程序。
在如图10所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以执行前文图3、图5、图7任一个所对应实施例中对该基于可信执行环境的数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的基于可信执行环境的数据处理装置1和基于可信执行环境的数据处理装置2所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3、图5、图7任一个所对应实施例中对基于可信执行环境的数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
上述计算机可读存储介质可以是前述任一实施例提供的基于可信执行环境的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
此外,这里需要指出的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前文图3、图5、图7任一个所对应实施例提供的方法。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机程序产品或者计算机程序实施例中未披露的技术细节,请参照本申请方法实施例的描述。
进一步的,请参见图11,图11是本申请实施例提供的一种数据处理***的结构示意图。如图11所示,该数据处理***3可以包含数据处理装置1a和数据处理装置2a。其中,数据处理装置1a可以为上述图8所对应实施例中的基于可信执行环境的数据处理装置1,可以理解的是,该数据处理装置1a可以集成在上述图2a所对应实施例中的业务节点20B,因此,这里将不再进行赘述。其中,数据处理装置2a可以为上述图9所对应实施例中的基于可信执行环境的数据处理装置2,可以理解的是,该数据处理装置2a可以集成在上述图2a对应实施例中的业务终端20A,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的数据处理***实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (20)

1.一种基于可信执行环境的数据处理方法,其特征在于,所述方法由业务网络中的业务节点执行,所述业务节点运行在所述可信执行环境中,所述方法包括:
获取目标客户端发送的远程认证请求,基于所述远程认证请求对所述业务节点的所述可信执行环境进行远程认证,且在远程认证成功时,与所述目标客户端建立通信连接;
基于所述通信连接获取所述目标客户端发送的第一授权申请请求;所述第一授权申请请求中携带业务对象的授权签名信息;所述授权签名信息为所述目标客户端所访问的业务前端中的所述业务对象的签名信息;
基于所述授权签名信息对所述业务对象进行身份校验,且在身份校验成功时,向所述目标客户端返回授权信息;
接收所述目标客户端基于所述授权信息发送的令牌申请请求,将所述令牌申请请求中的所述授权信息录入所述可信执行环境中的对象管理本地合约,通过所述对象管理本地合约对所述授权信息进行授权验证,且在授权验证成功时,向所述目标客户端返回第一访问令牌;所述第一访问令牌用于通过所述对象管理本地合约从核心共识网络中的区块链上获取与所述业务对象相关联的业务资源数据;所述核心共识网络独立于所述业务网络。
2.根据权利要求1所述的方法,其特征在于,所述核心共识网络中的区块链上部署有用于管理所述可信执行环境的可信环境管理合约;
所述基于所述远程认证请求对所述业务节点的所述可信执行环境进行远程认证,且在远程认证成功时,与所述目标客户端建立通信连接,包括:
基于所述远程认证请求获取与所述可信执行环境相关联的待验证关键信息,通过与所述业务节点相关联的中继服务设备向远程认证服务器发送所述待验证关键信息,以使所述远程认证服务器基于所述待验证关键信息对所述可信执行环境进行有效性验证,且在有效性验证成功时,向所述中继服务设备返回认证验证报告;
在接收到所述中继服务设备基于所述认证验证报告返回的认证成功响应信息时,确定所述可信执行环境为安全环境,且获取作为所述安全环境的所述可信执行环境中所部署的可信应用的应用度量值作为本地应用度量值;
通过所述可信执行环境中的对象管理本地合约,将从所述区块链上的所述可信环境管理合约中获取到的所述可信应用对应的应用度量值作为目标应用度量值;
将所述本地应用度量值与所述目标应用度量值进行比对,且在所述本地应用度量值与所述目标应用度量值比对一致时,确定所述可信执行环境远程认证成功,与所述目标客户端建立通信连接。
3.根据权利要求1所述的方法,其特征在于,所述第一授权申请请求中包含所述业务对象的所述授权签名信息、所述业务对象的对象公钥信息以及所述业务对象的对象身份标识;所述授权签名信息是在所述业务对象通过所述业务前端进行登录操作时,由与所述业务对象相关联的对象密钥管理工具通过所述对象公钥信息对应的对象私钥信息,对所述目标客户端发起的第二授权申请请求进行签名后所得到的;所述第二授权申请请求为所述第一授权申请请求之前的授权申请请求;所述对象公钥信息和所述对象私钥信息均由所述对象密钥管理工具所确定;所述可信执行环境中构建有对象登录凭证数据库;所述对象登录凭证数据库用于存储从所述区块链上的对象管理合约中同步来的注册对象的对象注册信息,所述注册对象的对象注册信息中包含所述注册对象的身份标识;
所述基于所述授权签名信息对所述业务对象进行身份校验,且在身份校验成功时,向所述目标客户端返回授权信息,包括:
从所述第一授权申请请求中获取所述授权签名信息和所述对象公钥信息,通过所述对象公钥信息对所述对象签名信息进行签名验证,得到签名验证结果;
在所述签名验证结果指示签名验证成功时,通过所述可信执行环境中的对象管理本地合约,在所述注册对象的对象注册信息中查找与所述对象身份标识相同的身份标识,且在查找到与所述对象身份标识相同的身份标识时,确定所述业务对象为所述注册对象,将所述业务对象为所述注册对象时的身份校验成功结果作为身份校验结果;
基于所述身份校验结果向所述目标客户端返回授权信息。
4.根据权利要求3所述的方法,其特征在于,所述基于所述身份校验结果向所述目标客户端返回授权信息,包括:
在所述身份校验结果指示身份校验成功时,通过所述对象管理本地合约将所述业务对象的业务状态配置为业务登录状态,且基于所述业务登录状态为所述目标客户端配置第一授权有效时长和第一访问权限范围;
基于所述第一授权有效时长和所述第一访问权限范围为所述目标客户端配置授权码,通过所述可信执行环境的硬件私钥信息对所述授权码进行签名,得到硬件签名信息;
获取所述硬件私钥信息对应的硬件公钥信息,对所述授权码、所述硬件签名信息以及所述硬件公钥信息进行数据映射,得到第一授权信息,将所述第一授权信息返回至所述目标客户端。
5.根据权利要求4所述的方法,其特征在于,所述接收所述目标客户端基于所述授权信息发送的令牌申请请求,将所述令牌申请请求中的所述授权信息录入所述可信执行环境中的对象管理本地合约,通过所述对象管理本地合约对所述授权信息进行授权验证,且在授权验证成功时,向所述目标客户端返回第一访问令牌,包括:
通过所述可信执行环境中的令牌发放服务接口接收所述目标客户端基于所述第一授权信息发送的第一令牌申请请求;所述第一令牌申请请求是所述目标客户端在通过所述第一授权信息中的所述硬件公钥信息对所述硬件签名信息验签成功时,基于所述第一授权信息所确定的;
将所述第一令牌申请请求中的所述第一授权信息录入所述可信执行环境中的所述对象管理本地合约,且将所述第一授权信息中携带的授权码作为待验证授权码;
通过所述对象管理本地合约从所述待验证授权码中获取第一待验证时长和第一待验证权限范围,将所述待验证授权码、所述第一待验证时长以及所述第一待验证权限范围作为第一请求信息;
将从所述可信执行环境中获取到的为所述目标客户端配置的所述授权码、所述第一授权有效时长以及所述第一访问权限范围作为第一授权数据信息,将所述第一请求信息和所述第一授权数据信息进行比对;
若所述第一请求信息和所述第一授权数据信息比对一致,则确定所述第一授权信息授权验证成功,基于所述第一授权信息向所述目标客户端返回第一访问令牌。
6.根据权利要求3所述的方法,其特征在于,所述基于所述身份校验结果向所述目标客户端返回授权信息,包括:
在所述身份校验结果指示身份校验成功时,通过所述对象管理本地合约将所述业务对象的业务状态配置为业务登录状态,且基于所述业务登录状态为所述目标客户端配置第二授权有效时长和第二访问权限范围;
基于所述可信执行环境的硬件公钥信息对所述第二授权有效时长和所述第二访问权限范围进行加密处理,得到第二授权信息,将所述第二授权信息返回至所述目标客户端。
7.根据权利要求6所述的方法,其特征在于,所述接收所述目标客户端基于所述授权信息发送的令牌申请请求,将所述令牌申请请求中的所述授权信息录入所述可信执行环境中的对象管理本地合约,通过所述对象管理本地合约对所述授权信息进行授权验证,且在授权验证成功时,向所述目标客户端返回第一访问令牌,包括:
通过所述可信执行环境中的令牌发放服务接口接收所述目标客户端基于所述第二授权信息发送的第二令牌申请请求;
将所述第二令牌申请请求中的所述第二授权信息录入所述可信执行环境中的所述对象管理本地合约,通过所述对象管理本地合约调用所述可信执行环境的硬件私钥信息对所述第二授权信息进行解密处理,得到第二待验证时长和第二待验证权限范围,且将解密得到的所述第二待验证时长和所述第二待验证权限范围作为第二请求信息;
将从所述可信执行环境中获取到的为所述目标客户端配置的所述第二授权有效时长和所述第二访问权限范围作为第二授权数据信息,将所述第二请求信息和所述第二授权数据信息进行比对;
若所述第二请求信息和所述第二授权数据信息比对一致,则确定所述第二授权信息授权验证成功,基于所述第二授权信息向所述目标客户端返回第一访问令牌。
8.根据权利要求1所述的方法,其特征在于,所述授权信息包含为所述目标客户端配置的授权有效时长和访问权限范围;所述第一访问令牌是在所述授权信息授权验证成功时,由所述可信执行环境中的令牌发放服务接口基于所述授权信息中的所述授权有效时长和所述访问权限范围所确定的访问令牌;所述授权有效时长用于确定所述第一访问令牌对应的令牌有效时长;所述授权有效时长大于或等于所述令牌有效时长;所述访问权限范围用于确定所述第一访问令牌对应的业务访问权限;所述业务访问权限为位于所述访问权限范围内的访问权限。
9.根据权利要求1所述的方法,其特征在于,还包括:
接收所述目标客户端基于所述第一访问令牌发送的业务资源访问请求,将所述业务资源访问请求中的所述第一访问令牌录入所述对象管理本地合约,通过所述对象管理本地合约对所述第一访问令牌进行合法性验证,得到合法性验证结果;
在所述合法性验证指示所述第一访问令牌为合法令牌时,通过所述对象管理本地合约从存储在所述可信执行环境的资源数据中获取作为所述合法令牌的所述第一访问令牌所请求的资源数据,将获取到的资源数据作为与所述业务对象相关联的业务资源数据,且将所述业务资源数据返回至所述目标客户端;所述可信执行环境中所存储的资源数据是从所述区块链上同步来的与对象管理合约相关联的数据。
10.根据权利要求9所述的方法,其特征在于,所述接收所述目标客户端基于所述第一访问令牌发送的业务资源访问请求,将所述业务资源访问请求中的所述第一访问令牌录入所述对象管理本地合约,通过所述对象管理本地合约对所述第一访问令牌进行合法性验证,得到合法性验证结果,包括:
通过所述可信执行环境中的信息读取服务接口接收所述目标客户端基于所述第一访问令牌发送的业务资源访问请求,将所述业务资源访问请求中的所述第一访问令牌录入所述对象管理本地合约;
通过所述对象管理本地合约,从所述可信执行环境中的对象登录凭证数据库中获取基于所述授权信息为所述目标客户端配置的访问令牌,将获取到的访问令牌作为目标访问令牌,且将所述目标访问令牌与所述第一访问令牌进行比对;
若所述目标访问令牌与所述第一访问令牌比对一致,则获取所述第一访问令牌对应的令牌使用时长和令牌有效时长,且在所述令牌使用时长小于所述令牌有效时长时,确定所述第一访问令牌为合法令牌,将所述第一访问令牌为所述合法令牌时的验证结果作为合法性验证结果。
11.根据权利要求9所述的方法,其特征在于,所述业务资源访问请求中携带所述业务对象的对象身份标识;所述第一访问令牌中包含令牌有效时长和业务访问权限;
所述通过所述对象管理本地合约从存储在所述可信执行环境的资源数据中获取作为所述合法令牌的所述第一访问令牌所请求的资源数据,将获取到的资源数据作为与所述业务对象相关联的业务资源数据,且将所述业务资源数据返回至所述目标客户端,包括:
通过所述可信执行环境中的信息读取服务接口调用所述对象管理本地合约,在所述可信执行环境所存储的资源数据中查找与所述对象身份标识相关联的资源数据,且将查找到的与所述对象身份标识相关联的资源数据作为对象资源数据;
获取作为所述合法令牌的所述第一访问令牌中的所述令牌有效时长和所述业务访问权限,在所述令牌有效时长内,从所述对象资源数据中获取所述业务访问权限所指示的资源数据作为与所述业务对象相关联的业务资源数据,通过所述信息读取服务接口将所述业务资源数据返回至所述目标客户端。
12.根据权利要求1所述的方法,其特征在于,还包括:
在向所述目标客户端返回所述第一访问令牌时,向所述目标客户端返回用于更新所述第一访问令牌的更新令牌;
接收所述目标客户端基于所述更新令牌发送的令牌更新请求,将所述令牌更新请求中的所述更新令牌录入所述对象管理本地合约,通过所述对象管理本地合约对所述更新令牌进行验证,且在验证成功时,向所述目标客户端返回第二访问令牌。
13.一种基于可信执行环境的数据处理方法,其特征在于,所述方法由目标客户端执行,与所述目标客户端相关联的业务网络中的业务节点运行在所述可信执行环境中,所述方法包括:
向所述业务节点发送远程认证请求;所述远程认证请求用于指示所述业务节点对所述可信执行环境进行远程认证,且在远程认证成功时,与所述目标客户端建立通信连接;
基于所述通信连接向所述业务节点发送第一授权申请请求;所述第一授权申请请求中携带业务对象的授权签名信息;所述授权签名信息为所述目标客户端所访问的业务前端中的所述业务对象的签名信息;所述授权签名信息用于指示所述业务节点对所述业务对象进行身份校验,且在身份校验成功时,向所述目标客户端返回授权信息;
基于所述授权信息生成令牌申请请求,将所述令牌申请请求发送至所述业务节点,以使所述业务节点将所述令牌申请请求中的所述授权信息录入所述可信执行环境中的对象管理本地合约;所述对象管理本地合约用于对所述授权信息进行授权验证,且在授权验证成功时,用于指示所述业务节点向所述目标客户端返回第一访问令牌;所述第一访问令牌用于通过所述对象管理本地合约从核心共识网络中的区块链上获取与所述业务对象相关联的业务资源数据;所述核心共识网络独立于所述业务网络。
14.根据权利要求13所述的方法,其特征在于,所述基于所述通信连接向所述业务节点发送第一授权申请请求,包括:
在所述目标客户端访问所述业务前端时,向所述业务前端发送第二授权申请请求;所述第二授权申请请求用于指示所述业务前端获取与所述业务对象相关联的对象密钥管理工具;所述对象密钥管理工具用于通过所述业务对象的对象私钥信息对所述第二授权申请请求进行签名,且将得到的所述业务对象的所述授权签名信息和所述对象私钥信息对应的对象公钥信息返回给所述目标客户端;所述对象公钥信息和所述对象私钥信息均由所述对象密钥管理工具所确定;
获取所述业务对象的对象身份标识,基于所述对象身份标识、所述授权签名信息以及所述对象公钥信息生成第一授权申请请求,且基于所述通信连接将所述第一授权申请请求发送至所述业务节点;所述第一授权申请请求为所述第二授权申请请求之后的授权申请请求。
15.根据权利要求13所述的方法,其特征在于,还包括:
基于所述第一访问令牌向所述业务节点发送业务资源访问请求;所述业务资源访问请求用于指示所述业务节点通过所述对象管理本地合约对所述业务资源访问请求中的所述第一访问令牌进行合法性验证,且在确定所述第一访问令牌为合法令牌时,通过所述对象管理本地合约从所述区块链上获取与所述业务对象相关联的业务资源数据;
基于所述业务节点返回的所述业务资源数据,执行目标业务。
16.一种基于可信执行环境的数据处理装置,其特征在于,所述装置运行在业务网络中的业务节点中,所述业务节点运行在所述可信执行环境中,所述装置包括:
远程认证模块,用于获取目标客户端发送的远程认证请求,基于所述远程认证请求对所述业务节点的所述可信执行环境进行远程认证,且在远程认证成功时,与所述目标客户端建立通信连接;
请求获取模块,用于基于所述通信连接获取所述目标客户端发送的第一授权申请请求;所述第一授权申请请求中携带业务对象的授权签名信息;所述授权签名信息为所述目标客户端所访问的业务前端中的所述业务对象的签名信息;
身份校验模块,用于基于所述授权签名信息对所述业务对象进行身份校验,且在身份校验成功时,向所述目标客户端返回授权信息;
令牌发放模块,用于接收所述目标客户端基于所述授权信息发送的令牌申请请求,将所述令牌申请请求中的所述授权信息录入所述可信执行环境中的对象管理本地合约,通过所述对象管理本地合约对所述授权信息进行授权验证,且在授权验证成功时,向所述目标客户端返回第一访问令牌;所述第一访问令牌用于通过所述对象管理本地合约从核心共识网络中的区块链上获取与所述业务对象相关联的业务资源数据;所述核心共识网络独立于所述业务网络。
17.一种基于可信执行环境的数据处理装置,其特征在于,所述装置运行在目标客户端中,与所述目标客户端相关联的业务网络中的业务节点运行在所述可信执行环境中,所述装置包括:
认证请求模块,用于向所述业务节点发送远程认证请求;所述远程认证请求用于指示所述业务节点对所述可信执行环境进行远程认证,且在远程认证成功时,与所述目标客户端建立通信连接;
授权申请模块,用于基于所述通信连接向所述业务节点发送第一授权申请请求;所述第一授权申请请求中携带业务对象的授权签名信息;所述授权签名信息为所述目标客户端所访问的业务前端中的所述业务对象的签名信息;所述授权签名信息用于指示所述业务节点对所述业务对象进行身份校验,且在身份校验成功时,向所述目标客户端返回授权信息;
令牌申请模块,用于基于所述授权信息生成令牌申请请求,将所述令牌申请请求发送至所述业务节点,以使所述业务节点将所述令牌申请请求中的所述授权信息录入所述可信执行环境中的对象管理本地合约;所述对象管理本地合约用于对所述授权信息进行授权验证,且在授权验证成功时,用于指示所述业务节点向所述目标客户端返回第一访问令牌;所述第一访问令牌用于通过所述对象管理本地合约从核心共识网络中的区块链上获取与所述业务对象相关联的业务资源数据;所述核心共识网络独立于所述业务网络。
18.一种计算机设备,其特征在于,包括:处理器和存储器;
所述处理器与所述存储器相连,其中,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使所述计算机设备执行权利要求1-15任一项所述的方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,该计算机程序适于由处理器加载并执行,以使具有所述处理器的计算机设备执行权利要求1-15任一项所述的方法。
20.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,该计算机指令适于由处理器读取并执行,以使具有所述处理器的计算机设备执行权利要求1-15任一项所述的方法。
CN202211488695.3A 2022-11-25 2022-11-25 基于可信执行环境的数据处理方法、装置、设备及介质 Pending CN116980163A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211488695.3A CN116980163A (zh) 2022-11-25 2022-11-25 基于可信执行环境的数据处理方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211488695.3A CN116980163A (zh) 2022-11-25 2022-11-25 基于可信执行环境的数据处理方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN116980163A true CN116980163A (zh) 2023-10-31

Family

ID=88470054

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211488695.3A Pending CN116980163A (zh) 2022-11-25 2022-11-25 基于可信执行环境的数据处理方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN116980163A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117235693A (zh) * 2023-11-14 2023-12-15 杭州安恒信息技术股份有限公司 一种可信执行环境的可信认证和安全通道建立方法
CN117544378A (zh) * 2023-11-21 2024-02-09 广州方舟信息科技有限公司 一种授权管理方法、装置、设备及存储介质
CN117579331A (zh) * 2023-11-15 2024-02-20 北京火山引擎科技有限公司 远程证明方法、装置、电子设备及存储介质
CN117997656A (zh) * 2024-04-03 2024-05-07 浙江大学 一种工控数据全生命周期安全管控***

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117235693A (zh) * 2023-11-14 2023-12-15 杭州安恒信息技术股份有限公司 一种可信执行环境的可信认证和安全通道建立方法
CN117235693B (zh) * 2023-11-14 2024-02-02 杭州安恒信息技术股份有限公司 一种可信执行环境的可信认证和安全通道建立方法
CN117579331A (zh) * 2023-11-15 2024-02-20 北京火山引擎科技有限公司 远程证明方法、装置、电子设备及存储介质
CN117544378A (zh) * 2023-11-21 2024-02-09 广州方舟信息科技有限公司 一种授权管理方法、装置、设备及存储介质
CN117997656A (zh) * 2024-04-03 2024-05-07 浙江大学 一种工控数据全生命周期安全管控***

Similar Documents

Publication Publication Date Title
CN111429254B (zh) 一种业务数据处理方法、设备以及可读存储介质
CN109478298B (zh) 区块链实现的方法和***
CN110915183B (zh) 经由硬/软令牌验证的区块链认证
US10367817B2 (en) Systems and methods for challengeless coauthentication
US11218481B2 (en) Personal identity system
US9374369B2 (en) Multi-factor authentication and comprehensive login system for client-server networks
US6418472B1 (en) System and method for using internet based caller ID for controlling access to an object stored in a computer
WO2021169107A1 (zh) 一种网络身份保护方法、装置及电子设备和存储介质
CN116980163A (zh) 基于可信执行环境的数据处理方法、装置、设备及介质
CN114679293A (zh) 基于零信任安全的访问控制方法、设备及存储介质
US20040255137A1 (en) Defending the name space
EP3579595B1 (en) Improved system and method for internet access age-verification
KR102410006B1 (ko) 사용자 권한 관리가 가능한 did 생성 방법 및 이를 이용한 사용자 권한 관리 시스템
US11841960B1 (en) Systems and processes for providing secure client controlled and managed exchange of data between parties
US20170104748A1 (en) System and method for managing network access with a certificate having soft expiration
US9450943B2 (en) Method and apparatus for remote connection
US20220353081A1 (en) User authentication techniques across applications on a user device
US10867326B2 (en) Reputation system and method
US12052246B2 (en) Personal identity system
Keil Social Security
CN117575788A (zh) 交易处理方法、装置、设备及介质
CN115967495A (zh) 基于区块链的公益应用管理方法和装置
CN116980136A (zh) 智能合约的接口处理方法、装置、设备、存储介质及产品
KR20210140804A (ko) 블록체인기반 모바일 해킹방지 프로세스를 이용한 알림공지서버 및 알림공지방법
CN118381626A (zh) 应用间的认证方法、设备及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication