基于孪生区块链的身份认证方法及相关设备

阅读: 评论:0

著录项
  • CN202211494505.9
  • 20221125
  • CN115883100A
  • 20230331
  • 中国电信股份有限公司
  • 段含婷;王憬晗;吕田田;张乐;吴艳芹
  • H04L9/32
  • H04L9/32 H04L9/08 H04L9/40

  • 北京市西城区金融大街31号
  • 北京(11)
  • 北京律智知识产权代理有限公司
  • 李建忠
摘要
本公开提供了一种基于孪生区块链的身份认证方法及相关设备,涉及信息安全技术领域。该方法包括,获取第一用户端发送的身份授权申请;判断是否完成身份注册;若是,对第一用户端进行授权,确定第一用户端的身份授权信息,将身份授权信息分别写入第一用户端的智能合约中与身份数据库;为第一用户端构建零知识身份证明、身份标识索引信息;获取第二用户端发送的认证第一用户端身份请求;将第一用户端合约中身份标示索引信息与身份数据库中身份索引进行对比校验;若对比校验成功,验证第一用户端零知识身份证明;若验证成功,确定第一用户端的身份合法。本公开利用区块链网络与零知识身份证明,提高了用户身份信息的安全性。
权利要求

1.一种基于孪生区块链的身份认证方法,其特征在于,应用于数字孪生网络的数据服务层,包括:

获取第一用户端发送的身份授权申请,其中,所述身份授权申请通过所述第一用户端的智能合约写入区块链,所述智能合约用于连接区块链记录第一用户端的身份信息;

判断发送所述身份授权申请的第一用户端是否完成身份注册;

若是,对所述第一用户端进行授权,确定所述第一用户端的身份授权信息,将所述身份授权信息分别写入第一用户端的智能合约中与身份数据库;

为第一用户端构建零知识身份证明、身份标识索引信息,将第一用户端的身份标识索引信息写入身份数据库,通过智能合约将第一用户端的身份标识索引信息和零知识身份证明写入区块链;

获取第二用户端发送的认证第一用户端身份请求;

根据认证第一用户端身份请求,将第一用户端合约中身份标示索引信息与身份数据库中身份索引进行对比校验;

若对比校验成功,验证第一用户端零知识身份证明;

若验证成功,确定第一用户端的身份合法。

2.根据权利要求1所述的基于孪生区块链的身份认证方法,其特征在于,所述零知识身份证明包括:

构建零知识身份认证协议,其中,所述零知识身份认证协议包括公共参数的构建、零知识证明的构建、零知识证明的验证三个部分。

3.根据权利要求2所述的基于孪生区块链的身份认证方法,其特征在于,所述公共参数的构建包括:

创建用于构建和验证零知识证明的密钥,其中,所述密钥包括证明密钥PK和验证密钥VK;

初始化公共参数CRS,其中,所述CRS分为PK和VK两部分,PK用于证明方构建零知识身份证明,VK用于验证方验证零知识身份证明。

4.根据权利要求2所述的基于孪生区块链的身份认证方法,其特征在于,所述零知识证明的构建包括:

将身份认证转化为数学表达式;

将所述数学表达式转换成一阶约束系统R1CS;

将R1CS转换成二次算数程序QAP。

5.根据权利要求2所述的基于孪生区块链的身份认证方法,其特征在于,所述零知识证明的验证包括:

根据证明密钥与身份信息,确定验证结果;

当验证结果满足预设等式,则通过零知识证明的验证。

6.根据权利要求1所述的基于孪生区块链的身份认证方法,其特征在于,在所述为第一用户端构建零知识身份证明中包括:

根据第一用户端的身份授权信息,通过反傅里叶变换确定第一用户端的零知识身份证明。

7.根据权利要求1所述的基于孪生区块链的身份认证方法,其特征在于,所述验证第一用户端零知识身份证明采用如下任意一种验证算法:

处理Processed;

未处理Non-processed;

强身份Strong_IC;

弱身份Weak_IC。

8.一种基于孪生区块链的身份认证装置,其特征在于,包括:

身份授权申请获取模块,用于获取第一用户端发送的身份授权申请,其中,所述身份授权申请通过所述第一用户端的智能合约写入区块链,所述智能合约用于连接区块链记录第一用户端的身份信息;

身份注册判断模块,用于判断发送所述身份授权申请的第一用户端是否完成身份注册;

身份授权模块,用于对所述第一用户端进行授权,确定所述第一用户端的身份授权信息,将所述身份授权信息分别写入第一用户端的智能合约中与身份数据库;

区块链写入模块,用于为第一用户端构建零知识身份证明、身份标识索引信息,将第一用户端的身份标识索引信息写入身份数据库,通过智能合约将第一用户端的身份标识索引信息和零知识身份证明写入区块链;

认证身份请求获取模块,用于获取第二用户端发送的认证第一用户端身份请求;

对比校验模块,用于根据认证第一用户端身份请求,将第一用户端合约中身份标示索引信息与身份数据库中身份索引进行对比校验;

身份证明验证模块,用于若对比校验成功,验证第一用户端零知识身份证明;

身份合法确定模块,用于若验证成功,确定第一用户端的身份合法。

9.一种电子设备,其特征在于,包括:

处理器;以及

存储器,用于存储所述处理器的可执行指令;

其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~7中任意一项所述的基于孪生区块链的身份认证方法。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~7中任意一项所述的基于孪生区块链的身份认证方法。

说明书
技术领域

本公开涉及信息安全技术领域,尤其涉及一种基于孪生区块链的身份认证方法及相关设备。

数字孪生技术可以帮助企业形成综合决策,对物理客观世界进行精确化的数字映射。在数字孪生的建立过程中,需要提取海量数据进行高精度计算,所以对于数据的安全性提出很高的要求。

现有技术中,数字孪生网络采用集中式身份认证方案,这种集中式身份认证方案的局限性一方面在于中心化的可信第三方容易遭受到恶意攻击,严重的可导致所有用户的身份信息被泄露。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

本公开提供一种基于孪生区块链的身份认证方法及相关设备,至少在一定程度上克服由于相关技术中用户身份信息泄露的问题。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

根据本公开的一个方面,提供了一种基于孪生区块链的身份认证方法,应用于数字孪生网络的数据服务层,包括:获取第一用户端发送的身份授权申请,其中,所述身份授权申请通过所述第一用户端的智能合约写入区块链,所述智能合约用于连接区块链记录第一用户端的身份信息;判断发送所述身份授权申请的第一用户端是否完成身份注册;若是,对所述第一用户端进行授权,确定所述第一用户端的身份授权信息,将所述身份授权信息分别写入第一用户端的智能合约中与身份数据库;为第一用户端构建零知识身份证明、身份标识索引信息,将第一用户端的身份标识索引信息写入身份数据库,通过智能合约将第一用户端的身份标识索引信息和零知识身份证明写入区块链;获取第二用户端发送的认证第一用户端身份请求;根据认证第一用户端身份请求,将第一用户端合约中身份标示索引信息与身份数据库中身份索引进行对比校验;若对比校验成功,验证第一用户端零知识身份证明;若验证成功,确定第一用户端的身份合法。

在一些实施例中,所述零知识身份证明包括:构建零知识身份认证协议,其中,所述零知识身份认证协议包括公共参数的构建、零知识证明的构建、零知识证明的验证三个部分。

在一些实施例中,所述公共参数的构建包括:创建用于构建和验证零知识证明的密钥,其中,所述密钥包括证明密钥PK和验证密钥VK;初始化公共参数CRS,其中,所述CRS分为PK和VK两部分,PK用于证明方构建零知识身份证明,VK用于验证方验证零知识身份证明。

在一些实施例中,所述零知识证明的构建包括:将身份认证转化为数学表达式;将所述数学表达式转换成一阶约束系统R1CS;将R1CS转换成二次算数程序QAP。

在一些实施例中,所述零知识证明的验证包括:根据证明密钥与身份信息,确定验证结果;当验证结果满足预设等式,则通过零知识证明的验证。

在一些实施例中,在所述为第一用户端构建零知识身份证明中包括:根据第一用户端的身份授权信息,通过反傅里叶变换确定第一用户端的零知识身份证明。

在一些实施例中,所述验证第一用户端零知识身份证明采用如下任意一种验证算法:处理Processed;未处理Non-processed;强身份Strong_IC;弱身份Weak_IC。

根据本公开的另一个方面,还提供了一种基于孪生区块链的身份认证装置,包括:身份授权申请获取模块,用于获取第一用户端发送的身份授权申请,其中,所述身份授权申请通过所述第一用户端的智能合约写入区块链,所述智能合约用于连接区块链记录第一用户端的身份信息;身份注册判断模块,用于判断发送所述身份授权申请的第一用户端是否完成身份注册;身份授权模块,用于对所述第一用户端进行授权,确定所述第一用户端的身份授权信息,将所述身份授权信息分别写入第一用户端的智能合约中与身份数据库;区块链写入模块,用于为第一用户端构建零知识身份证明、身份标识索引信息,将第一用户端的身份标识索引信息写入身份数据库,通过智能合约将第一用户端的身份标识索引信息和零知识身份证明写入区块链;认证身份请求获取模块,用于获取第二用户端发送的认证第一用户端身份请求;对比校验模块,用于根据认证第一用户端身份请求,将第一用户端合约中身份标示索引信息与身份数据库中身份索引进行对比校验;身份证明验证模块,用于若对比校验成功,验证第一用户端零知识身份证明;身份合法确定模块,用于若验证成功,确定第一用户端的身份合法。

根据本公开的另一个方面,还提供了一种电子设备,该电子设备包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的基于孪生区块链的身份认证方法。

根据本公开的另一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的基于孪生区块链的身份认证方法。

根据本公开的另一个方面,还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述任意一项的基于孪生区块链的身份认证方法。

本公开的实施例中提供的基于孪生区块链的身份认证方法及相关设备,获取第一用户端发送的身份授权申请,其中,身份授权申请通过第一用户端的智能合约写入区块链,智能合约用于连接区块链记录第一用户端的身份信息;判断发送身份授权申请的第一用户端是否完成身份注册;若是,对第一用户端进行授权,确定第一用户端的身份授权信息,将身份授权信息分别写入第一用户端的智能合约中与身份数据库;为第一用户端构建零知识身份证明、身份标识索引信息,将第一用户端的身份标识索引信息写入身份数据库,通过智能合约将第一用户端的身份标识索引信息和零知识身份证明写入区块链;获取第二用户端发送的认证第一用户端身份请求;根据认证第一用户端身份请求,将第一用户端合约中身份标示索引信息与身份数据库中身份索引进行对比校验;若对比校验成功,验证第一用户端零知识身份证明;若验证成功,确定第一用户端的身份合法。本公开应用于数字孪生网络的数据服务层,利用去中心化的区块链网络与零知识身份证明的方法,为数字孪生搭建一个可靠、安全的计算平台,提高了用户身份信息的安全性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出本公开实施例中一种基于孪生区块链的身份认证方法的示例性网络架构示意图;

图2示出本公开实施例中一种本公开实施例中基于孪生区块链的身份认证方法的零知识身份认证总体架构;

图3示出本公开实施例中一种基于孪生区块链的身份认证方法流程图;

图4示出本公开实施例中一种基于孪生区块链的身份认证方法一具体实例的流程图;

图5示出本公开实施例中一种基于孪生区块链的身份认证方法又一具体实例的流程图;

图6示出本公开实施例中一种基于孪生区块链的身份认证方法再一具体实例的流程图;

图7示出本公开实施例中一种零知识证明构建流程图;

图8示出本公开实施例中一种PK的创建过程代码示意图;

图9示出本公开实施例中一种VK的创建过程代码示意图;

图10示出本公开实施例中一种零知识证明的创建代码示意图;

图11示出本公开实施例中一种创建证明结果成功代码示意图;

图12示出本公开实施例中一种验证证明结果成功代码示意图;

图13示出本公开实施例中一种密钥对的创建结果代码示意图;

图14示出本公开实施例中一种身份证明创建的时间消耗示意图;

图15示出本公开实施例中一种身份证明验证的时间消耗示意图;

图16示出本公开实施例中一种基于孪生区块链的身份认证装置示意图;

图17示出本公开实施例中一种计算机设备的结构框图。

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

下面结合附图,对本公开实施例的具体实施方式进行详细说明。

图1示出了可以应用本公开实施例中基于孪生区块链的身份认证方法的示例性网络架构示意图。如图1所示,该网络架构100可以包括网络应用层101、孪生网络层102和物理网络层103。

网络应用层将意图解析发送到孪生网络层,孪生网络层将能力调用发送到网络应用层、将控制下发到物理网络层,物理网络层将数据采集发送到孪生网络层。

其中,孪生网络层102包括基于区块链的数据共享仓库1021、服务映射模型1022和网络孪生体管理1023。

本公开利用去中心化的区块链网络代替传统的中心化服务器,减少了中心化服务存在的安全隐患。

数据共享仓库中引入包含身份认证的区块链技术,其具体架构如图2所示。

图2示出了可以应用本公开实施例中基于孪生区块链的身份认证方法的零知识身份认证总体架构。整体设计分为链上和链下两个部分。链下负责审核用户在现实社会中的真实身份,以及为用户颁发可用的身份信息。链上负责存储用户获得的身份信息,并提供一个可以可供随时访问的身份认证平台。

链下主要由三类实体组成,分别为身份认证中心201、授权中心202和使用身份认证服务的用户(包括认证用户2031和被认证用户2032)。身份认证中心维护身份认证服务器,授权中心维护授权服务器。在本公开设计下的身份认证网络中存在多个身份认证中心,每个身份认证中心都运行着自己独立的服务器。一个身份认证中心可以指定多个授权中心,这些授权中心之间相互隔离各自工作。这个身份认证中心和这些被指定的授权中心可以访问共同的一个身份数据库204,数据库中分别记录着身份认证中心和授权中心为用户颁发的身份信息数据。授权中心具有对身份认证中心写入数据的读权限。审查机构205(监管机构)可以接入所有身份数据库,通过对身份数据库中身份数据的的检验来审查身份认证区块链网络中所有被颁发的身份。

为获得一个具备可用性的合法身份,用户需要首先用自己现实中的身份信息在身份认证中心注册身份,成功之后向授权中心提出身份授权申请。在确认了该用户确实完成了身份注册后,授权中心为用户颁发一个可用的身份。在获取身份信息的过程中,身份注册和身份授权的分离可以让用户只需完成一次身份注册就可以被多次授权。这样的设计使用户能够更加灵活方便地对自己的身份进行控制。

用户在接收到自己注册身份成功的返回信息后,身份认证平台为用户在底层区块链206创建一份智能合约207。这份智能合约负责连接区块链记录这个用户的身份信息。用户将自己的身份标示通过智能合约写入区块链。在用户获得身份授权之后,授权节点再次通过智能合约将为该用户生成的身份标识索引信息和零知识身份证明写入区块链。

当其他用户想要认证某一用户的身份合法性时,通过智能合约的函数接口读出用户的身份信息。将身份信息中的身份标示索引信息与身份数据库公布的身份索引进行对比校验。校验成功后,验证零知识身份证明。若验证成功,则确认这一用户的身份合法。

本公开的底层区块链采用Hyperledger Fabric联盟链。链下数据通过调用智能合约的方式与链上交互。本公开包含了对用户身份数据上链的逻辑实现,形成了一份完整的智能合约模版。每一次对智能合约的调用都需要经过背书、共识和记账三个步骤来完成。

本公开在数字孪生网络的数据服务层中,设计了一种基于区块链的零知识身份认证方案。该方案利用区块链的特性对传统的身份认证方案进行去中心化的设计,消除了通信双方在身份认证过程中对可信第三方的依赖。另外,本公开还采用零知识证明技术,用于向其他用户证明自己的合法身份,同时保证在这个过程中,任何能够用于推断出用户身份的私密信息都不会泄露,保证数字孪生网络运行的安全与可靠。

图3示出本公开实施例中一种基于孪生区块链的身份认证方法流程图,如图3所示,本公开实施例中提供的基于孪生区块链的身份认证方法包括如下步骤:

S302,获取第一用户端发送的身份授权申请,其中,身份授权申请通过第一用户端的智能合约写入区块链,智能合约用于连接区块链记录第一用户端的身份信息;

S302,判断发送身份授权申请的第一用户端是否完成身份注册。

需要说明的是,上述第一用户端可以是与服务器相对应,为客户提供本地服务的程序,也称为客户端,在本公开中为申请身份授权的用户端。

S304,若是,对第一用户端进行授权,确定第一用户端的身份授权信息,将身份授权信息分别写入第一用户端的智能合约中与身份数据库。

需要说明的是,上述智能合约可以是以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。

S306,为第一用户端构建零知识身份证明、身份标识索引信息,将第一用户端的身份标识索引信息写入身份数据库,通过智能合约将第一用户端的身份标识索引信息和零知识身份证明写入区块链。

需要说明的是,上述身份标识索引信息可以是用于表征用户身份的信息。

S308,获取第二用户端发送的认证第一用户端身份请求。

需要说明的是,上述第二用户端可以是与服务器相对应,为客户提供本地服务的程序,在本公开中为认证第一用户端的用户端。

例如,用户(第二用户端)想要认证某一用户(第一用户端)的身份合法性。

S310,根据认证第一用户端身份请求,将第一用户端合约中身份标示索引信息与身份数据库中身份索引进行对比校验;

S312,若对比校验成功,验证第一用户端零知识身份证明;

S314,若验证成功,确定第一用户端的身份合法。

本公开应用于数字孪生网络的数据服务层,利用去中心化的区块链网络与零知识身份证明的方法,为数字孪生搭建一个可靠、安全的计算平台,提高了用户身份信息的安全性。

在本公开的一个实施例中,零知识身份证明包括:构建零知识身份认证协议,其中,零知识身份认证协议包括公共参数的构建、零知识证明的构建、零知识证明的验证三个部分。

在本公开的一个实施例中,如图4所示,本公开实施例中提供的目标检测方法可以通过如下步骤来构建公共参数,能够准确预测出图像中待检测物体的中心位置:

S402,创建用于构建和验证零知识证明的密钥,其中,密钥包括证明密钥PK和验证密钥VK;

S404,初始化公共参数CRS,其中,CRS分为PK和VK两部分,PK用于证明方构建零知识身份证明,VK用于验证方验证零知识身份证明。

例如,采用非交互式零知识证明技术构建身份认证可以减少方案中网络交互的次数,增强系统的安全性。在构建零知识证明之前,需要先参与方共同初始化一个CRS(CommonReference String,公共参数)。CRS分为PK(Proving key,证明密钥)和VK(Verificationkey,验证密钥)两部分。他们分别用于证明方构造证明与验证方验证证明。

CRS的构造过程如下:

一、认证中心选择一个椭圆曲线来确定三个阶为p(p为一个质数)的循环G1、G2、Gτ。循环具备非退化的双线性映射关系,分别确定生成元g1、g2、gτ,配对函数e表示为下述公式(1):

e:G1×G2→Gτ (1)

循环内元素满足关系为下述公式(2):

e(g1,g2)=gτ (2)

通过利用倍点运算单项函数的性质,可以对G1,G2上选择的随机数进行同态隐藏。和/>分别表示G1、G2中的非零元素,gn表示椭圆曲线上的倍点运算,表示该生成元自相加了n次。

二、在G1、G2上根据随机数计算PK、VK。G1、G2上的点σ1表示为下述公式(3)、σ2表示为为下述公式(4):

基于CRS的零知识证明生成方式表达为下述公式(5)、下述公式(6):

基于CRS的零知识证明验证方式表达为下述公式(7):

参数α和β保证了多项式采用相同的系数{Sk:k∈{0,…,m}}。数β和γ保证了在验证过程中,算结果独立于α和γ。

在本公开的一个实施例中,如图5所示,本公开实施例中提供的目标检测方法可以通过如下步骤来构建零知识证明:

S502,将身份认证转化为数学表达式;

S504,将数学表达式转换成一阶约束系统R1CS;

S506,将R1CS转换成二次算数程序QAP。

例如,构建零知识身份证明协议,需要先将身份认证问题转化为一个数学表达式,然后将数学表达式转换成R1CS(Level-1 Constraint System,一阶约束系统)。为加强R1CS中问题之间的“关系”,需要进一步将R1CS转换成QAP(Quadratic Arithmetic Program,二次算数程序)。

满足R1CS约束的条件表达式为下述公式(8):

S·C=S·A*S·B; (8)

其中,S为长度为m的向量,A、B、C均为m列n行的矩阵,m表示算数电路中变量的个数,n表示算数电路的个数,其表示方式如下,A为下述公式(9)、B为下述公式(10)、C为下述公式(11)、S为下述公式(12):

S= ( s0 s1 … sm ); (12)

进一步地,根据拉格朗日中值定理构建QAP,得到A(x)、B(x)、C(x),A(x)通过下述公式(13)表达、B(x)通过下述公式(14)表达、C(x)通过下述公式(15)表达:

/>

创建z(x),通过下述公式(16)表达:

在本公开的一个实施例中,如图6所示,本公开实施例中提供的目标检测方法可以通过如下步骤来验证零知识证明,能够准确预测出图像中待检测物体的中心位置:

S602,根据证明密钥与身份信息,确定验证结果;

S604,当验证结果满足预设等式,则通过零知识证明的验证。

在本文所提出的零知识身份认证过程中,statement公开用于描述用户的身份信息。witness由授权中心秘密发送给用户用于证明身份。S称为witness,A(x)、B(x)、C(x)组成statement。将S分别与A(x)、B(x)、C(x)做内积运算,得到的结果如果不能整除z(x)时则零知识证明验证失败。反之,若满足以下等式(17)则通过零知识证明的验证。

因为ak(x)、bk(x)、ck(x)、z(x)均在有限域F(x)内,所以最终的结果h(x)也同样在有限域F(x)中。

在本公开的一个实施例中,根据第一用户端的身份授权信息,通过反傅里叶变换确定第一用户端的零知识身份证明。

例如,身份承诺(相当于上述身份授权信息)的构造由授权中心完成。先根据A(x)、B(x)、C(x)、z(x)计算得到h(x),之后通过反傅里叶变换计算出多项式系数(18)。

{hk:k∈{0,…,n-2}};(18)

从而得到公式(19):

授权中心选择随机数r,z∈Fq,U1、V2表示G1、G2上的随机数,身份承诺π=(U1,V1,W1)计算过程为下述公式(20-23),U1通过下述公式(20)计算:

/>

V需要在有限域G1和G2上通过下述公式(21)、公式(22)分别计算:

W为V在有限域G1上计算得到,计算方式如下公式(23):

由此,身份承诺π构造完成。

身份认证利用配对函数对身份承诺π中的U、V、W进行计算,并验证是否与CRS中的VK满足线性关系。验证过程如下公式(24):

利用配对函数对结果进行验证如下公式(25):

若等式成立,则验证身份承诺π成功,证明该身份有效。可以看到,对于承诺的验证计算较少,能够满足对身份的快速认证。

在本公开的一个实施例中,验证第一用户端零知识身份证明采用如下任意一种验证算法:处理Processed;未处理Non-processed;强身份Strong_IC;弱身份Weak_IC。

例如,四种验证函数,分成两类:Processed/Non-processed和Weak/Strong IC。Processed/Non-processed是指验证的Key是否Processed。Weak/Strong IC指的是,是否Input Consistency。Primary Input的大小和QAP的Statement的大小相等,称为StrongIC。Primary Input的大小小于QAP的Statement的大小,称为Weak IC。

在一个具体的实施例中,对上述的身份认证方法进行实验设计。零知识身份认证协议采用开源代码库Libsnark作为开发框架。身份认证协议主要包括公共参数的建立、零知识证明的创建、零知识证明的验证三个部分,具体信息如下表1所示:

表1身份认证程序

协议的安全性依赖于CRS对随机数的设置,零知识身份认证的创建和验证均基于CRS。因为身份认证问题是NP问题,所以可以将协议中构建的身份认证电路结合CRS通过构建R1CS的算法转化为中性点钳位(Neutral point clamped,NPC)数字电路。然后再通过转化算法将R1CS转化为QAP数字电路。在QAP数字电路的输入中,Auxiliary表示需要公开的信息,Primary表示需要身份持有者秘密保存的信息。身份认证的零知识证明构建如图7所示。

图7示出了零知识证明构建流程图,包括如下步骤:

S701:获取身份认证问题,将身份认证问题转化为一个数学表达式;

S703:一阶约束系统rlcs_constraint_system将数学表达式转换成R1CS;

S705:二次算数程序实例qap_instance将R1CS转换成QAP;

S707:确定密钥对keypair;

S709:构建证明密钥proving_key;

S711:构建验证密钥verification_key;

S702:在QAP数字电路的输入数据;

S704:需要公开的信息auxiliary;

S706:授权中心秘密发送给用户用于证明身份qap_witness;

S708:需要身份持有者秘密保存的信息primary;

S710:函数rlcs_gg_ppzksnark_prover提供的信息;

S712:获得证明proof;

S714:用rlcs_gg_ppzksnark_verifier_strong_IC函数验证proof是否正确,若是(true),进入S715,若否(false),进入S716;

S715:验证成功。

S716:验证失败。

本公开选择使用Groth16算法来构建零知识身份证明,开源代码库Libsnark对Groth16算法进行了实现。为完成公共参数初始化,首先需要创建用于构造和验证零知识证明的密钥,密钥PK和VK的创建过程分别如图8、图9所示。

公共参数初始化后,进行对零知识身份证明的创建。将身份认证中心标识号、身份序列号、授权序列号三个信息作为Primary构建QAP电路,实验结果如图10所示。

零知识证明的创建需要进行三次傅里叶变化和四次反傅里叶变化,过程相比于零知识证明的验证较为消耗时间。

实验结果表明(如图11与图12),身份证明的生成过程所需时间过长。但是,由于这个步骤是在授权中心完成,所以是一个可接受的时间范围,而验证身份证明的时间较短,能够在现实场景中使用。

对实施例的结果分析:

系统首先初始化CRS来创建Proving_key和Verification_key作为PK和VK。创建出来的PK大小为867891386比特,VK大小为4267比特,结果如图十三所示。

从结果可以看到PK的大小远远小于VK。因此,在授权中心创建好密钥对之后,计算能力强,存储空间丰富的授权中心保存PK用于构建零知识身份证明。在认证过程中,将VK发送给实体用于身份认证。VK的大小不会为网络通信和实体的存储带来压力,具备可行性。

零知识身份认证协议由创建身份证明和验证身份证明两个部分组成。实验模拟身份认证链下环境,分别对身份证明的创建和身份证明的验证进行了多次测试。创建零知识身份证明的实验结果如图八所示。

从身份证明创建的时间消耗的实验结果(图14)可以看出,创建零知识身份证明的平均时间大概在26s左右。创建的时间较长是由于过程中涉及大量运算电路的转换。考虑到身份证明是在授权节点进行,授权节点的计算资源相对丰富,计算设备性能的提高能够提高生成身份证明的工作效率。并且身份证明是在身份授权的过程中进行,该过程涉及多个步骤,用户对响应的实时性要求不高。因此,零知识身份证明的生成时间能够满足方案的设计需求。

验证零知识身份证明的实验结果(身份证明验证的时间消耗)如图15所示,对于零知识证明的验证方法,Libsnark库中提供了多种验证方法。根据要求输入数据的不同可以分为两类。一类验证算法为Processed和Non-processed。二者的区别在于,Processed比Non-processed在创建VK环节中多进行了一次处理,减轻了验证身份证明的计算负担。另一类验证算法为Strong_IC和Weak_IC。二者的主要区别在于,验证过程中是否对公共输入参数进行检查。Strong_IC要求输入的公共参数与构建电路中用到的公共参数数量相等。实验选择使用Strong_IC进行对身份证明的验证。

从实验结果可以看出,验证零知识身份证明的平均时间大概在0.06s左右。相比于身份证明的创建,身份证明的验证能够在较短时间内完成,能够满足用户在现实环境中的使用需求。综上所述,本公开具备可实施性。

本公开基于数字孪生的零知识身份认证总体架构,建立了一个同时具备虚拟空间与现实物理世界的数据集成和闭环的身份认证框架。本公开利用去中心化的区块链网络代替传统的中心化服务器,减少了中心化服务存在的安全隐患;本公开利用零知识身份证明,使得用户可以在不透露自己身份秘密信息的前提下完成身份认证,保护身份信息不会被窃取;本公开将区块链与数字孪生技术相结合,为数字孪生搭建一个可靠、安全的计算平台,扩大了数字孪生网络的应用范围。

基于同一发明构思,本公开实施例中还提供了一种基于孪生区块链的身份认证装置,如下面的实施例所述。由于该装置实施例解决问题的原理与上述方法实施例相似,因此该装置实施例的实施可以参见上述方法实施例的实施,重复之处不再赘述。

图16示出本公开实施例中一种基于孪生区块链的身份认证装置示意图,如图16所示,该装置包括:身份授权申请获取模块161、身份注册判断模块162、身份授权模块163、区块链写入模块164、认证身份请求获取模块165、对比校验模块166、身份证明验证模块167和身份合法确定模块168。

其中,身份授权申请获取模块,用于获取第一用户端发送的身份授权申请,其中,所述身份授权申请通过所述第一用户端的智能合约写入区块链,所述智能合约用于连接区块链记录第一用户端的身份信息;

身份注册判断模块,用于判断发送所述身份授权申请的第一用户端是否完成身份注册;

身份授权模块,用于对所述第一用户端进行授权,确定所述第一用户端的身份授权信息,将所述身份授权信息分别写入第一用户端的智能合约中与身份数据库;

区块链写入模块,用于为第一用户端构建零知识身份证明、身份标识索引信息,将第一用户端的身份标识索引信息写入身份数据库,通过智能合约将第一用户端的身份标识索引信息和零知识身份证明写入区块链;

认证身份请求获取模块,用于获取第二用户端发送的认证第一用户端身份请求;

对比校验模块,用于根据认证第一用户端身份请求,将第一用户端合约中身份标示索引信息与身份数据库中身份索引进行对比校验;

身份证明验证模块,用于若对比校验成功,验证第一用户端零知识身份证明;

身份合法确定模块,用于若验证成功,确定第一用户端的身份合法。

在本公开的一个实施例中,上述区块链写入模块中零知识身份证明包括:构建零知识身份认证协议,其中,所述零知识身份认证协议包括公共参数的构建、零知识证明的构建、零知识证明的验证三个部分。

在本公开的一个实施例中,上述区块链写入模块中公共参数的构建包括:创建用于构建和验证零知识证明的密钥,其中,所述密钥包括证明密钥PK和验证密钥VK;初始化公共参数CRS,其中,所述CRS分为PK和VK两部分,PK用于证明方构建零知识身份证明,VK用于验证方验证零知识身份证明。

在本公开的一个实施例中,上述区块链写入模块中零知识证明的构建包括:将身份认证转化为数学表达式;将所述数学表达式转换成一阶约束系统R1CS;将R1CS转换成二次算数程序QAP。

在本公开的一个实施例中,上述区块链写入模块中零知识证明的验证包括:根据证明密钥与身份信息,确定验证结果;当验证结果满足预设等式,则通过零知识证明的验证。

在本公开的一个实施例中,上述区块链写入模块还用于:根据第一用户端的身份授权信息,通过反傅里叶变换确定第一用户端的零知识身份证明。

在本公开的一个实施例中,上述身份证明验证模块采用如下任意一种验证算法:Processed;Non-processed;Strong_IC;Weak_IC。

此处需要说明的是,上述身份授权申请获取模块161、身份注册判断模块162、身份授权模块163、区块链写入模块164、认证身份请求获取模块165、对比校验模块166、身份证明验证模块167、身份合法确定模块168对应于方法实施例中的S302~S314,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述方法实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。

所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

下面参照图17来描述根据本公开的这种实施方式的电子设备1700。图17显示的电子设备1700仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图17所示,电子设备1700以通用计算设备的形式表现。电子设备1700的组件可以包括但不限于:上述至少一个处理单元1710、上述至少一个存储单元1720、连接不同系统组件(包括存储单元1720和处理单元1710)的总线1730。

其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1710执行,使得所述处理单元1710执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。

例如,所述处理单元1710可以执行上述方法实施例的如下步骤:获取第一用户端发送的身份授权申请,其中,身份授权申请通过第一用户端的智能合约写入区块链,智能合约用于连接区块链记录第一用户端的身份信息;判断发送身份授权申请的第一用户端是否完成身份注册;若是,对第一用户端进行授权,确定第一用户端的身份授权信息,将身份授权信息分别写入第一用户端的智能合约中与身份数据库;为第一用户端构建零知识身份证明、身份标识索引信息,将第一用户端的身份标识索引信息写入身份数据库,通过智能合约将第一用户端的身份标识索引信息和零知识身份证明写入区块链;获取第二用户端发送的认证第一用户端身份请求;根据认证第一用户端身份请求,将第一用户端合约中身份标示索引信息与身份数据库中身份索引进行对比校验;若对比校验成功,验证第一用户端零知识身份证明;若验证成功,确定第一用户端的身份合法。

存储单元1720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)17201和/或高速缓存存储单元17202,还可以进一步包括只读存储单元(ROM)17203。

存储单元1720还可以包括具有一组(至少一个)程序模块17205的程序/实用工具17204,这样的程序模块17205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线1730可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备1700也可以与一个或多个外部设备1740(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1700交互的设备通信,和/或与使得该电子设备1700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1750进行。并且,电子设备1700还可以通过网络适配器1760与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1760通过总线1730与电子设备1700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机程序产品,该计算机程序产品包括:计算机程序,所述计算机程序被处理器执行时实现上述基于孪生区块链的身份认证方法。

在本公开的示例性实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质可以是可读信号介质或者可读存储介质。其上存储有能够实现本公开上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。

本公开中的计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

在本公开中,计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可选地,计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。

在具体实施时,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。

通过以上实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

本文发布于:2023-04-15 04:19:02,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/1/87567.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图