1.本说明书实施例属于区块链技术领域,尤其涉及一种数字身份管理方法、区块链节点和系统。
背景技术:2.区块链(blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。目前,区块链用户对区块链中业务的参与方式通常是匿名的,从区块链中的交易不能确定该交易涉及的区块链账户对应的真实用户的身份信息。
技术实现要素:3.本发明的目的在于提供一种数字身份管理方案,以用于对区块链账户对应的数字身份进行管理。
4.本说明书第一方面提供一种数字身份管理系统,包括管理设备、区块链和用户设备,所述区块链中存储有第一账户对应的用户的身份信息,所述管理设备包括用于基于属性加密算法生成的主公钥和主私钥,
5.所述管理设备用于:从所述区块链获取所述第一账户对应的用户的身份信息;生成所述用户的身份信息列表,基于所述身份信息列表、所述主公钥和所述主私钥生成第一子私钥,所述身份信息列表中包括所述第一账户和所述身份信息;将所述第一子私钥和所述身份信息列表发送给所述区块链;
6.所述区块链用于存储所述第一子私钥和所述身份信息列表;
7.所述用户设备用于从所述区块链获取所述第一子私钥和所述身份信息列表,基于所述第一子私钥和预设策略信息进行属性签名,生成所述第一账户的身份签名,所述预设策略信息包括所述第一账户和所述用户的身份标识。
8.在一种实施方式中,所述用户设备还用于将所述身份签名发送给所述区块链,所述区块链还用于关联地存储所述身份签名与所述第一账户。
9.在一种实施方式中,所述区块链中部署有第一合约,所述管理设备在将所述第一子私钥和所述身份信息列表发送给所述区块链时具体用于:向所述区块链发送调用所述第一合约的第一交易,所述第一交易中包括所述第一子私钥和所述身份信息列表;
10.所述区块链在存储所述第一子私钥和所述身份信息列表时具体用于:根据所述第一交易在所述第一合约的合约状态中的账户信息列表中与所述第一账户关联地存储所述第一子私钥和所述身份信息列表。
11.在一种实施方式中,所述第一合约使得所述第一子私钥和所述身份信息列表在被存储到所述账户信息列表之后不可更新、且不可删除。
12.在一种实施方式中,所述第一交易中包括第一账户和对所述第一账户的子私钥和所述身份信息列表进行加密得到的第一密文,所述第一密文使用所述第一账户的公钥加密生成,所述区块链在存储所述第一子私钥和所述身份信息列表时具体用于:在所述账户信息列表中与所述第一账户关联地存储所述第一密文。
13.在一种实施方式中,所述用户设备还用于生成所述第一账户,通过所述第一账户向所述区块链发送调用所述第一合约的第二交易,所述第二交易中包括所述第一账户对应的用户的身份信息,所述区块链还用于根据所述第二交易将所述身份信息与所述第一账户关联地存储到所述第一合约的合约状态中。
14.在一种实施方式中,所述第二交易中包括所述用户身份信息的第二密文,所述第二密文使用所述管理设备对应的第二账户的公钥加密生成,所述区块链在存储所述用户身份信息时具体用于将所述第二密文与所述第一账户关联地存储到所述第一合约的合约状态中。
15.在一种实施方式中,所述系统还包括认证设备,
16.所述认证设备用于:从所述区块链获取所述主公钥和所述第一账户的身份签名;使用所述主公钥和所述预设策略信息对所述身份签名进行验证,在验证通过的情况下,向所述区块链上传所述第一账户对应的用户属性信息;
17.所述管理设备还用于从所述区块链获取所述第一账户的用户属性信息,生成所述第一账户的属性列表,所述属性列表中包括所述第一账户和所述用户属性信息,基于所述属性列表、所述主公钥和主私钥生成第二子私钥,将所述第二子私钥和所述属性列表上传至所述区块链;
18.所述用户设备还用于从所述区块链获取所述第二子私钥和所述属性列表,基于所述第二子私钥和第二策略信息进行属性签名,得到第二签名,所述第二策略信息包括所述属性列表中的所述第一账户和至少一项属性信息,所述第二签名用于证明所述第一账户对应的用户具备所述至少一项属性信息对应的属性。
19.在一种实施方式中,所述用户设备还用于:通过所述第一账户向所述区块链发送创建所述第一账户的第三交易;所述区块链还用于根据所述第三交易在状态数据库中创建所述第一账户。
20.本说明书第二方面提供一种数字身份管理方法,由区块链节点执行,所述区块链中存储有第一账户对应的用户的身份信息,所述方法包括:
21.将所述第一账户对应的用户的身份信息发送给管理设备,所述管理设备包括用于基于属性加密算法生成的主公钥和主私钥;
22.从所述管理设备接收所述第一账户对应的第一子私钥和身份信息列表,所述身份信息列表中包括所述第一账户和所述身份信息,所述第一子私钥基于所述身份信息列表、所述主公钥和所述主私钥生成;
23.存储所述第一子私钥和所述身份信息列表;
24.将所述第一子私钥和所述身份信息列表发送给用户设备,以使得所述用户设备使用所述第一子私钥和预设策略信息生成所述第一账户的身份签名,所述预设策略信息包括所述第一账户和所述用户的身份标识。
25.在一种实施方式中,所述方法还包括:从所述用户设备接收所述身份签名,关联地
存储所述身份签名与所述第一账户。
26.在一种实施方式中,所述区块链中部署有第一合约,所述从所述管理设备接收所述第一账户对应的第一子私钥和身份信息列表包括,从所述管理设备接收调用所述第一合约的第一交易,所述第一交易中包括所述第一子私钥和所述身份信息列表;
27.所述存储所述第一子私钥和所述身份信息列表包括:在所述第一合约的合约状态中的账户信息列表中与所述第一账户关联地存储所述第一子私钥和所述身份信息列表。
28.在一种实施方式中,所述存储所述第一子私钥和所述身份信息列表还包括:将存储的所述第一子私钥和所述身份信息列表设置为不可更新、且不可删除。
29.在一种实施方式中,所述第一交易中包括所述第一账户和对所述第一账户的子私钥和所述身份信息列表进行加密得到的第一密文,所述第一密文使用所述第一账户的公钥加密生成,所述在所述账户信息列表中与所述第一账户关联地存储所述第一子私钥和所述身份信息列表包括:在所述账户信息列表中与所述第一账户关联地存储所述第一密文。
30.本说明书第三方面提供一种区块链节点,所述区块链中存储有第一账户对应的用户的身份信息,所述节点包括:
31.发送单元,用于将所述第一账户对应的用户的身份信息发送给管理设备,所述管理设备包括用于基于属性加密算法生成的主公钥和主私钥;
32.接收单元,用于从所述管理设备接收所述第一账户对应的第一子私钥和身份信息列表,所述身份信息列表中包括所述第一账户和所述身份信息,所述第一子私钥基于所述身份信息列表、所述主公钥和所述主私钥生成;
33.存储单元,用于存储所述第一子私钥和所述身份信息列表;
34.所述发送单元还用于,将所述第一子私钥和所述身份信息列表发送给用户设备,以使得所述用户设备使用所述第一子私钥和预设策略信息生成所述第一账户的身份签名,所述预设策略信息包括所述第一账户和所述用户的身份标识。
35.本说明书第四方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第二方面所述的方法。
36.本说明书第五方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第二方面所述的方法。
37.通过本说明书实施例提供的数字身份管理方案,基于区块链和属性加密技术,由管理机构提供提供区块链账户的身份信息列表和子私钥,从而可构建区块链账户对应的可信数字身份、可基于区块链账户的身份签名方便地对区块链账户进行实名验证,将数字世界中的区块链账户与物理世界中的真实用户绑定起来。
附图说明
38.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
39.图1示出了一实施例中的区块链架构图;
40.图2为本说明书实施例提供的数字身份管理系统的架构示意图;
41.图3为本说明书实施例提供的一种数字身份管理方法的流程图;
42.图4为本说明书实施例中基于属性签名算法生成签名的过程示意图;
43.图5为本说明书实施例中的基于属性签名算法对签名进行验证的过程示意图;
44.图6为本说明书另一实施例提供的一种数字身份管理方法的流程图;
45.图7为本说明书实施例中基于属性签名算法生成签名的过程示意图;
46.图8为本说明书实施例中的基于属性签名算法对签名进行验证的过程示意图;
47.图9为本说明书实施例提供的一种区块链节点的架构图。
具体实施方式
48.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
49.图1示出了一实施例中的区块链架构图。在图1所示的区块链架构图中,区块链100中例如包含节点1-节点6共6个节点。节点之间的连线示意性的表示p2p(peer to peer,点对点)连接。这些节点上可存储全量的账本,即存储全部区块和全部账户的状态。其中,区块链中的每个节点可通过执行相同的交易而产生区块链中的相同的状态,区块链中的每个节点可存储相同的状态数据库。可以理解,图1中虽然示出了区块链中包括6个节点,本说明书实施例不限于此,而是可以包括其他数目的节点。具体是,区块链中包含的节点可以满足拜占庭容错(byzantine fault tolerance,bft)要求。所述的拜占庭容错要求可以理解为在区块链内部可以存在拜占庭节点,而区块链对外不体现拜占庭行为。一般的,一些拜占庭容错算法中要求节点个数大于3f+1,f为拜占庭节点个数,例如实用拜占庭容错算法pbft(practical byzantine fault tolerance)。
50.区块链领域中的交易可以指在区块链中执行并记录在区块链中的任务单元。交易中通常包括发送字段(from)、接收字段(to)和数据字段(data)。其中,在交易为转账交易的情况中,from字段表示发起该交易(即发起对另一个账户的转账任务)的账户地址,to字段表示接收该交易(即接收转账)的账户地址,data字段中包括转账金额。在交易调用区块链中的智能合约的情况中,from字段表示发起该交易的账户地址,to字段表示交易所调用的合约的账户地址,data字段中包括调用合约中的函数名、及对该函数的传入参数等数据,以用于在交易执行时从区块链中获取该函数的代码并执行该函数的代码。
51.区块链中可提供智能合约的功能。区块链上的智能合约是在区块链系统上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。在区块链中调用智能合约,是发起一笔指向智能合约地址的交易,使得区块链中每个节点分布式地运行智能合约代码。需要说明的是,除了可以由用户创建智能合约,也可以在创世块中由系统设置智能合约。此外,具有系统管理员权限的账户可以创建系统级的合约,或者修改系统级的合约(简称为系统合约)。其中,所述系统合约可用于在区块链中增加不同业务的数据的数据结构。
52.在部署合约的场景中,例如,bob将一个包含创建智能合约信息(即部署合约)的交易发送到如图1所示的区块链中,该交易的data字段包括待创建的合约的代码(如字节码或
者机器码),交易的to字段为空,以表示该交易用于部署合约。节点间通过共识机制达成一致后,确定合约的合约地址“0x6f8ae93
…”
,各个节点在状态数据库中添加与该智能合约的合约地址对应的合约账户,分配与该合约账户对应的状态存储,并将合约代码保存在该合约的状态存储中,从而合约创建成功。
53.在调用合约的场景中,例如,bob将一个用于调用智能合约的交易发送到如图1所示的区块链中,该交易的from字段是交易发起方(即bob)的账户的地址,to字段中的“0x6f8ae93
…”
代表了被调用的智能合约的地址,交易的data字段包括调用智能合约的方法和参数。在区块链中对该交易进行共识之后,区块链中的各个节点可分别执行该交易,从而分别执行该合约,基于该合约的执行更新状态数据库。
54.目前,区块链用户对区块链业务的参与方式通常是匿名的,从区块链中的交易只能确定发起该区块链行为的区块链账户,而不能确定该区块链账户对应的真实用户的身份信息。也就是说,区块链所提供的业务环境与真实世界是分离的,难以对真实世界中的用户进行管理。例如,一旦区块链中的账户行为存在违法行为,将无法追查到该账户对应的真实世界中的个人或单位。而随着基于区块链的经济活动日益增多,对于区块链中的账户存在越来越强的身份认证的需求。
55.本说明书实施例提供一种对区块链中的账户进行数字身份管理的方法。数字身份是描述一个人或事物的一组数据,是数字世界中关于一个人的所有信息的总和。数字身份由各种各样的属性汇总而成,身份可以通过属性描述,比如姓名,身份标识,工作,证书,婚姻等等信息,属性组成了一个完整的身份实体。通过由管理设备生成区块链账户对应的用户的身份信息列表,在该身份信息列表中包括区块链账户和用户的身份信息,基于属性加密系统中的密钥生成算法生成子私钥,并在区块链中与区块链账户关联地存储子私钥和身份信息列表,从而用户可基于属性签名算法生成身份签名,该身份签名可用于验证账户对应的用户的身份信息。
56.图2为本说明书实施例提供的数字身份管理系统的架构示意图。如图2所示,系统中包括区块链100、用户设备10、管理设备20和认证设备30。其中,用户设备10可以为任意终端设备,如智能手机、计算设备、笔记本、平板电脑等设备,对此不作限定。用户设备10可通过用户对应的区块链账户向区块链100上传用户的身份信息。管理设备20为可信设备,其可以从区块链中获取用户的身份信息,基于用户的全部身份信息生成用户的身份信息列表,基于属性加密系统中的密钥生成算法生成用户的子私钥,并将用户的身份信息列表、子私钥与用户的账户关联地上传到区块链,从而在区块链中存储了该区块链账户对应的数字身份。用户可使用该身份信息列表和子私钥生成符合一定策略的身份签名,以用于向其他人或公司证明该账户经过实名认证,与真实用户对应。认证设备30为认证机构所使用的设备。认证机构例如是向用户颁发各种证件、证书的机构,如学校、管理机构等。认证设备30可获取该身份签名,并基于属性签名验证算法对该身份签名进行验证,在验证通过之后,可上传与账户关联的用户的属性信息,如学历证书、结婚证书、工作年限等。可以理解,图2中虽然仅示出一个认证设备30,在实际中,用户的不同属性可由不同机构或单位的设备(即认证设备)进行上传。
57.图3为本说明书实施例提供的一种数字身份管理方法的流程图。该方法可由图2中的区块链100、用户设备10和管理设备20执行。其中,区块链100在执行方法步骤时,实际表
示区块链100中的每个节点(例如节点1~节点6)都执行该方法步骤。
58.参考图3,首先,在步骤s301,管理设备20生成主公钥和主私钥。
59.管理设备20可以通过基于密文策略的属性加密系统(ciphertext policy attribute based encryption,cp-abe)生成主公钥和主私钥,主私钥由管理设备20保管。作为另一个示例,管理设备20可以对应于多个管理设备,该多个管理设备可以采用安全多方计算的方式来生成主公钥和主私钥,主私钥由多个管理设备共同维护,需要使用主私钥时由多个管理设备同时参与计算。
60.具体是,管理设备20可调用cp-abe中的cpabe_setup()函数,生成主私钥msk和主公钥mpk。
61.在步骤s303,管理设备20将主公钥上传至区块链100。
62.具体是,管理设备20可以向区块链100的任一区块链节点发送交易tx1,该交易tx1可由管理设备20对应的管理机构的区块链账户a1发送,账户a1对应于账户私钥systemsk和账户公钥systempk,私钥systemsk可用于生成交易tx1的数字签名,公钥systempk可用于对该数字签名进行验证。该交易tx1可以调用区块链中的数字身份管理合约c1(下文中简称为合约c1),以向区块链上传主公钥。其中,该合约可由管理设备20部署到区块链中,以进行对区块链账户对应的数字身份的管理。区块链节点在接收到该交易之后将该交易发送给区块链中的其他节点,从而使得区块链中的各个节点可执行该交易。区块链100的各个节点通过执行该交易,将主公钥存储到区块链中,例如可以将主公钥存储到合约c1的合约状态中,从而使得其他设备可从区块链中获取该主公钥。
63.在一种实施方式中,交易tx1中还可以包括账户a1的公钥systempk,从而区块链100中的各个节点通过执行交易tx1还将公钥systempk存储到区块链中,公钥systempk除了可用于验证账户a1的数字签名之外,其他设备还可以使用公钥systempk对上传到区块链的数据进行加密,从而使得该数据只允许管理设备20通过使用私钥systemsk进行解密而获取到该数据。可以理解,区块链中的各个节点可以通过其他方式获取账户a1的公钥systempk,例如,可从管理机构的官方主页中获取,或者可以从秘钥管理机构获取等,对此不作限定。
64.在步骤s305,用户设备10生成用户的区块链账户。
65.具体是,用户设备10可首先生成一对公私钥,例如公钥upk和私钥usk,以用作为待生成的区块链账户的公私钥。之后,用户设备10可调用账户生成算法(例如从任一区块链节点调用、或者从本地调用),基于公钥upk生成账户a2。
66.用户设备10在生成账户a2之后,可以生成以账户a2为发送账户的交易,并将该交易发送到区块链中,区块链中的各个节点在对该交易达成共识之后,分别执行该交易,从而可在状态数据库中创建账户a2的存储空间,以用于存储账户a2的账户信息,从而完成在区块链中对账户a2的创建。
67.在步骤s307,用户设备10向区块链100上传账户a2对应的用户身份信息。
68.具体是,用户设备10可通过账户a2向区块链100发送调用合约c1的交易tx2,从而向区块链100上传用户的身份信息,该身份信息中例如包括用户的姓名、身份标识、护照等信息。区块链100中的各个节点通过执行交易tx2可在合约c1的合约状态中的与账户a2关联地存储该用户身份信息。例如,合约c1的合约状态中包括用户上传信息列表,各个节点通过执行交易tx2可在用户上传信息列表中与账户a2关联地存储该用户身份信息。
69.其中,用户设备10可从区块链100中获取管理机构20的公钥systempk,从而可在交易tx2中包括用户身份信息的密文userinfocipher,该密文使用管理机构的公钥systempk进行加密。具体是,密文userinfocipher可通过如下公式(1)生成:
70.userinfocipher=ecies_encrypt(systempk,userinfo)
ꢀꢀꢀ
(1)
71.其中,userinfo表示用户上传的用户身份信息,ecies_encrypt表示椭圆曲线加密方案(elliptic curve integrate encrypt scheme,ecies)加解密算法中的加密算法。
72.在步骤s309,管理设备20从区块链100获取账户a2对应的用户身份信息。
73.管理设备20可通过向区块链发送调用合约c1的查询交易tx3,以从区块链100获取在合约c1的合约状态中的用户上传信息列表中关联存储的账户a2和账户a2对应的用户身份信息。其中,在用户身份信息为使用管理机构的公钥systempk加密信息的情况中,管理设备20可以使用管理机构的私钥systemsk对密文进行解密,从而得到用户身份信息。具体是,可通过如下公式(2)得到用户身份信息userinfo:
74.userinfo=ecies_decrypt(systemsk,userinfocipher)
ꢀꢀꢀ
(2)
75.其中,ecies_decrypt表示椭圆曲线综合加密方案(elliptic curve integrate encrypt scheme,ecies)加解密算法中的解密算法。
76.在步骤s311,管理设备20生成用户对应的账户的身份信息列表和身份子私钥。
77.管理设备20在从区块链接收到用户身份信息之后,根据用户身份信息进行身份校验和鉴定。并校验身份标识在区块链上是否已经存在经认证的区块链账户,以保证身份标识与区块链上的唯一的账户对应。其中,管理设备20例如可通过向区块链发送调用合约c1的交易,从而从合约c1的合约状态中查询身份标识对应的区块链账户。
78.在审核未通过的情况中,管理设备20可向区块链发送调用合约c1的交易,以在合约c1的合约状态中记录账户a2认证未通过的相关信息。
79.在审核通过情况中,管理设备20为区块链账户a2生成身份信息列表attrilist1。其中,身份信息列表attrilist1中包括账户a2和账户a2所对应的用户的一个或多个身份信息。例如,该身份信息列表attrilist1中可包括账户a2、姓名、身份标识、护照数据等多个身份信息。
80.之后,如下面的公式(3)所示,管理设备20可调用cpabe属性加密算法中的子私钥生成函数cpabe_keygen()生成账户a2对应的子私钥sk1:
81.sk1=cpabe_keygen(attrilist1,msk,mpk)
ꢀꢀꢀ
(3)
82.从公式(3)可见,对函数cpabe_keygen()的输入参数包括attrilist1、msk和mpk三项,通过基于属性加密算法生成子私钥sk1,该子私钥sk1可用于基于签名策略进行属性签名,得到身份签名,以用于证明账户a2对应于特定真实用户,而mpk可用于基于签名策略验证该签名为真,即验证账户a2对应于特定的真实用户。
83.在步骤s313,管理设备20向区块链100上传账户的子私钥和身份信息列表。
84.管理设备20可向区块链100发送调用合约c1的交易tx4,以用于在合约c1的合约状态中的账户信息列表accountinfolist1中存储账户a2的身份信息列表attrilist1、子私钥sk1和认证通过状态(status)。该账户信息列表用于存储各个账户的账户信息。
85.另外,在之前的交易tx2中可以包括用户的公钥upk,区块链中在执行交易tx2之后在区块链中的用户上传信息列表中还与账户a2关联地存储公钥upk,从而管理设备20还可
以从区块链中获取用户的公钥upk。管理设备20可在交易tx4中包括使用账户a2的公钥upk对身份信息列表attrilist1和子私钥sk1进行加密得到的密文accountcipher,从而将该密文存储到accountinfolist1中,以更好地保护用户隐私。
86.区块链100中的各个节点在执行交易tx4之后,在合约c1的合约状态中的accountinfolist1中与账户a2关联地存储身份信息列表attrilist1、子私钥sk1和“认证通过”状态,或者与账户a2关联地存储密文accountcipher和认证通过状态。另外,在accountinfolist1中还可以与账户a2关联地存储公钥upk。
87.在一种实施方式中,合约c1中可将accountinfolist1中的信息设置为不可更改、不可删除。从而使得区块链账户一旦与用户绑定之后,子私钥sk1维持不变,因此,使用子私钥sk1和预设签名策略得到是属性签名也不会变化,由于该属性签名用于证明账户对应的用户身份,因此,可将该属性签名称为身份签名。从而,用户可以不用重复计算身份签名,而是可以重复使用第一次计算得到的身份签名。
88.在步骤s315,用户设备10从区块链100获取账户a2的子私钥和身份信息列表。
89.用户设备10可向区块链100中任一节点发送调用合约c1的交易,该交易中包括账户a2或公钥upk,以在accountinfolist1中查询与账户a2对应的账户信息。区块链节点在接收到该查询交易之后,根据账户a2或者公钥upk从accountinfolist1中找到对应的账户信息,该账户信息中包括账户a2对应的子私钥和身份信息列表,并将该账户信息发送给用户设备10。在该accountinfolist1中存储了accountcipher的情况中,将accountcipher发送给用户设备10。用户设备10在接收accountcipher之后,使用用户的私钥usk对accountcipher进行解密,得到账户a2对应的子私钥和身份信息列表。
90.在步骤s317,用户设备10使用子私钥和策略信息生成身份签名。
91.用户设备10可基于属性签名算法生成用于证明区块链账户与用户的身份标识对应的证明数据,该证明数据也就是通过属性签名算法生成的签名。
92.图4为本说明书实施例中生成身份签名的过程示意图。如图4所示,用户设备10可使用子私钥sk1对预设数据data1进行属性签名,得到签名sign1,签名策略信息policy1包括用户的身份信息列表attrilist1中的区块链账户a2和身份标识,即policy1={a2,身份标识}。其中data1例如如下面的公式(4)所示生成:
93.data1=hash(身份标识+a2)
ꢀꢀꢀ
(4)
94.其中,公式(4)中的“+”表示对身份标识和a2进行结合,结合方式不限,例如,这里可以为将身份标识和a2拼接到一起。
95.签名sign1可如下面的公式(5)所示生成:
96.sign1=cpabe_sign(sk1,policy1,data1)
ꢀꢀꢀ
(5)
97.其中,公式(5)中的cpabe_sign()函数为属性签名函数,通过将sk1、policy1、data1输入该属性签名函数,只有在身份信息列表attrilist1中同时包括policy1中的全部属性(即a2和身份标识)的情况下,才能签名成功,否则签名失败。因此,该生成的签名sign1可用于证明账户a2与用户身份标识是绑定的,且该绑定关系是经过管理机构验证的。
98.在步骤s319,用户设备向区块链上传身份签名。
99.用户设备10在生成身份签名sign1之后,可通过向区块链发送调用合约c1的交易tx5,该交易tx5中包括身份签名sign1、并且以账户a2为发送账户。区块链中的各个节点通
过执行该交易tx5,例如可在合约c1的合约状态中的身份签名列表中与账户a2关联地存储sign1。由于合约c1中设置sk1不可更改,因此,该签名sign1也不会更改,从而其他用户可从区块链中获取该签名sign1,并使用该sign1验证账户a2是否与特定用户标识对应。
100.图5为本说明书实施例中验证身份签名的过程示意图。如图5所示,其他用户设备可从区块链中获取由管理设备预先存储的主公钥mpk,之后,通过将上述policy1、mpk、data1和sign1输入属性签名验证算法中,属性签名验证算法在对身份签名验证通过的情况中,输出“true”,也即证明了policy1中的账户a2与用户标识确实是在一个身份信息列表中,因此,账户a2与该用户标识对应。属性签名验证算法在对身份签名验证不通过的情况中,输出“false”,即证明账户a2与用户标识不对应。
101.在本说明书实施例中,管理机构除了在区块链中存储上述身份信息列表和对应的子私钥之外sk1,还可以生成用户的属性列表和对应的子私钥sk2,从而通过该子私钥sk2和属性列表生成的签名可用于证明账户对应的用户具备的属性。
102.图6为本说明书另一实施例中的一种数字身份管理方法的流程图。该方法可由图2中的区块链100、用户设备10、管理设备20和认证设备30执行。
103.如图6所示,首先,在步骤s601,用户设备10将用户的区块链账户a2和身份标识发送给认证设备30。
104.在物理世界中,认证机构有可能对用户设备10对应的用户颁发纸质的认证证书,例如当个人在大学完成学业之后,学校会给个人颁发学位证书,这里学校就是一个认证机构。为了使得认证机构将该纸质证书对应的属性颁发给个人对应的区块链账户,以完善该区块链账户对应的数字身份,用户设备10可将用户的区块链账户a2和身份标识发送给认证设备30,以触发认证设备30将属于该用户的学位属性上传至区块链。
105.具体是,为了保护用户的隐私信息,用户设备10可以使用认证设备30对应的认证机构的公钥对身份标识进行加密,并将加密得到的密文发送给认证设备30,从而认证设备30可通过使用认证机构的私钥对密文进行解密得到用户的身份标识。
106.在步骤s603,认证设备30从区块链100获取主公钥mpk和账户a2的身份签名。
107.具体是,认证设备30可向任一区块链节点发送调用合约c1的交易,以用于查询管理设备20的主公钥、以及账户a2的身份签名,该区块链节点在接收到该交易之后,通过执行该交易在合约c1的合约状态中获取主公钥mpk和账户a2的身份签名sign1,并将mpk和sign1返回给认证设备30。
108.在步骤s605,认证设备30使用主公钥mpk和策略信息policy1验证签名sign1。
109.认证设备30可以根据用户设备10的指示或者区块链中预设的规则,确定与签名sign1对应的签名策略为上述policy1。同时,认证设备30可按照用户设备10的指示或者预先的约定根据公式(4)计算得到data1。然后,认证设备30可通过如下的公式(6)对签名sign1进行验证,得到验证结果result1:
110.result1=cpabe_verify(mpk,policy1,data1,sign1)
ꢀꢀꢀ
(6)
111.在公式(6)中,cpabe_verify为用于验证签名的函数。参考上文对图5的描述,通过将mpk、policy1、data1和sign1作为参数输入cpabe_verify函数,该函数可输出真(ture)或假(false)作为验证结果。其中,当sign1确实是基于policy1中的全部属性签名成功的情况下,该函数输出true,从而可验证账户a2与身份标识是绑定的。
112.在步骤s607,认证设备30向区块链100上传账户a2对应的用户属性。
113.认证设备30在验证了账户a2与用户的身份标识绑定之后,通过将该policy1中的身份标识与证书对应的身份标识进行比对,如果一致,说明账户a2对应的用户即为证书对应的用户,因此,也即验证了账户a2可具有该证书对应的一项或多项属性。例如,该证书为某大学计算机系的硕士毕业证书,与该硕士毕业证书属性可以包括:硕士学历、计算机专业、毕业于某大学等属性。
114.认证设备30可通过向区块链100发送调用合约c1的交易tx6,向区块链100上传账户a2对应的用户属性,该交易tx6中包括账户a2和上述与纸质证书对应的一项或多项属性。具体是,假设认证机构待上传到区块链的信息info={a2,硕士学历、毕业于某大学、计算机专业},交易tx6中可调用合约c1中的publishcert(a2,infocipher,infosign,a3/companypk),其中,a3为认证机构对应的区块链账户,companypk为账户a3的公钥,infocipher通过如下公式(7)生成:
115.infocipher=ecies_encrypt(systempk,info)
ꢀꢀꢀ
(7)
116.其中,在公式(7)中,infocipher为通过管理机构的公钥对信息info加密得到的密文,从而使得仅管理机构可以获取该info。
117.上述infosign通过如下公式(8)生成:
118.infosign=ecies_sign(companysk,infohash)
ꢀꢀꢀ
(8)
119.其中,在公式(8)中,companysk为认证机构的区块链账户a3的私钥,infohash为info的哈希值,也就是说,infosign为认证机构对信息info的数字签名,以用于验证该信息info由认证机构上传。
120.区块链100中的各个节点在执行交易tx6时,可将{a2,infocipher,infosign,a3/companypk}作为一个条目存放到合约c1的合约状态中的认证信息列表accountcertslist中。
121.在步骤s609,管理设备20从区块链100获取账户a2对应的用户属性。
122.管理设备20可通过向区块链100中的任一节点发送调用合约的交易,以用于获取认证信息列表accountcertslist中的信息。
123.例如,管理设备20从区块链节点接收认证信息列表accountcertslist中的条目{a2,infocipher,infosign,a3/companypk},管理设备20首先验证该条目对应的info的有效性。
124.具体是,管理设备20首先如下面的公式(9)所示,使用管理机构的私钥systemsk对infocipher解密,得到信息info:
125.info=ecies_decrypt(systemsk,infocipher)
ꢀꢀꢀ
(9)
126.然后,根据a3/companypk获取预先存储的账户a3对应的认证机构的机构信息,该机构信息中包括账户a3的公钥companypk和账户a3,然后使用公钥companypk验证信息info的签名infosign的有效性。在签名验证通过之后,管理设备20对应的管理机构还会链下查验信息info的合理性和合法性,包括验证认证机构的资质是否足够,颁发时间是否合理等。
127.在步骤s611,管理设备20生成账户a2的属性列表和子私钥。
128.在上述校验都通过之后,管理设备20确定本地是否已经存储有账户a2的属性列表,该属性列表中包括账户a2、以及账户a2对应的用户的一个或多个属性,所述属性为除用
户的身份信息以外的特征信息,如证件、证书等。如果确定结果为否,则创建账户a2的属性列表attrilist2,并在该属性列表中包括上述获取的用户属性。如果确定结果为是,则在账户a2已有的属性列表attrilist2中添加上述获取的用户属性。例如,该更新的属性列表attrilist2中可包括账户a2、公钥upk、硕士学历、毕业于某大学、计算机专业等多个属性。之后,管理设备20可基于如下的公式(10)生成账户a2的另一个子私钥sk2:
129.sk2=cpabe_keygen(attrilist2,msk,mpk)
ꢀꢀꢀ
(10)
130.从公式(10)可见,账户a2的另一个子私钥sk2与账户a2的属性列表attrilist2对应。
131.在步骤s613,管理设备20向区块链100上传账户a2的子私钥sk2和属性列表attrilist2。
132.与上文上传账户a2的子私钥sk1和属性列表attrilist1类似地,管理设备20可通过向区块链发送调用合约c1的交易,以向区块链上传账户a2的子私钥sk2和属性列表attrilist2。区块链中的各个节点在接收到该交易之后,在另一个账户信息列表accountinfolist2中与账户a2关联地存储子私钥sk2和属性列表attrilist2或者子私钥sk2和属性列表attrilist2的密文。
133.其他认证机构可通过同样的方式使得账户a2的属性列表attrilist2和子私钥sk2得到更新,从而使得账户a2对应的数字身份具有各种类型的属性。
134.在步骤s615,用户设备10从区块链100获取账户a2的子私钥sk2和属性列表attrilist2。用户设备10可向区块链节点发送调用合约c1的交易,以查询账户信息列表attrilist2中的账户a2对应的子私钥sk2和属性列表attrilist2。
135.在步骤s617,用户设备10使用子私钥sk2和策略信息policy2生成签名。
136.用户设备10可基于公式(11)计算签名sign2,以用于验证账户a2对应的用户具备属性列表attrilist2中的任意属性,该任意属性通过策略信息policy2限定:
137.sign2=cpabe_sign(sk2,policy2,data2)
ꢀꢀꢀ
(11)
138.在公式(11)中,data2是用户设备10对应的用户与验证方约定好的任意数据,policy2为用户与验证方约定好的属性。例如,验证方为区块链100中的账户a4对应的用户,验证方在通过区块链中与账户a2进行交易(例如对账户a2转移数字资产)之前,需要确定账户a2对应的用户满足一定的属性,例如,账户a2对应的用户的资产高于预设金额、账户a2的信用值高于预设值等,验证方可与账户a2对应的用户约定进行属性签名的策略policy2={a2,资产高于x元,信用值大于y}。
139.图7为本说明书实施例中基于属性签名算法生成签名的过程示意图。如图7所示,签名策略policy2={a2,资产》x,信用值》y},即签名策略需要账户a2同时包括a2,资产高于x元和信用值大于y三项属性,data2为约定好的任意数据,例如可以为一段字符“账户a2属性证明”,通过将policy2、sk2和data2作为参数输入属性签名算法,只有在账户a2对应的属性列表attrilist2中包括policy2中的全部属性时,才能成功生成签名sign2。该sign2可以作为证明账户a2对应于属性“资产》x”和“信用值》y”的证明数据。用户设备10在生成签名sign2之后,可以将sign2发送给验证方设备。
140.可以理解,所述policy2不限于需要账户a2同时包括a2,资产高于x元和信用值大于y三项属性,例如,policy2可以为{a2,{1/2}{资产》x,信用值》y}},即要求账户a2需要包
括a2属性和{资产高于x元、信用值大于y}中的至少一项属性。
141.验证方可使用公式(12)对sign2进行验证:
142.result2=cpabe_verify(mpk,policy2,data2,sign2)
ꢀꢀꢀ
(12)
143.图8为本说明书实施例中的基于属性签名算法对签名进行验证的过程示意图。如图8中所示,通过将上述policy2、mpk、data2和sign2输入属性签名验证算法,即公式(12)中的cpabe_verify(),在输出的result2为true时,即验证了账户a2与资产高于x元、信用值大于y都是账户a2对应的属性列表attrilist2中包括的属性,也即验证了账户a2对应的用户满足资产高于x元、信用值大于y的条件,从而,验证方可通过其账户a4发起与账户a2之间的交易。
144.图9为本说明书实施例中的一种区块链节点的架构图,所述区块链中存储有第一账户对应的用户的身份信息,所述节点包括:
145.发送单元91,用于将所述第一账户对应的用户的身份信息发送给管理设备,所述管理设备包括用于基于属性加密算法生成的主公钥和主私钥;
146.接收单元92,用于从所述管理设备接收所述第一账户对应的第一子私钥和身份信息列表,所述身份信息列表中包括所述第一账户和所述身份信息,所述第一子私钥基于所述身份信息列表、所述主公钥和所述主私钥生成;
147.存储单元93,用于存储所述第一子私钥和所述身份信息列表;
148.所述发送单元91还用于,将所述第一子私钥和所述身份信息列表发送给用户设备,以使得所述用户设备基于所述第一子私钥和预设策略信息进行属性签名,生成所述第一账户的身份签名,所述预设策略信息包括所述第一账户和所述用户的身份标识。
149.本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行如图3或图6所示的方法。
150.本说明书实施例还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现如图3或图6所示的方法。
151.通过本说明书实施例提供的数字身份管理方案,基于区块链和属性加密技术,由管理机构提供提供区块链账户的身份信息列表和子私钥,从而可构建区块链账户对应的可信数字身份、可基于区块链账户的身份签名方便地对区块链账户进行实名验证,将数字世界中的区块链账户与物理世界中的真实用户绑定起来。
152.在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmable logic device,pld)(例如现场可编程门阵列(field programmable gate array,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言
(hardware description language,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advanced boolean expression language)、ahdl(altera hardware description language)、confluence、cupl(cornell university programming language)、hdcal、jhdl(java hardware description language)、lava、lola、myhdl、palasm、rhdl(ruby hardware description language)等,目前最普遍使用的是vhdl(very-high-speed integrated circuit hardware description language)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
153.控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(application specific integrated circuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc 625d、atmel at91sam、microchip pic18f26k20以及silicone labs c8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
154.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本技术不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
155.虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
156.为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外
的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
157.本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
158.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
159.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
160.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
161.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
162.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
163.本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
164.本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个
或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
165.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
166.以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
技术特征:1.一种数字身份管理系统,包括管理设备、区块链和用户设备,所述区块链中存储有第一账户对应的用户的身份信息,所述管理设备包括用于基于属性加密算法生成的主公钥和主私钥,所述管理设备用于:从所述区块链获取所述第一账户对应的用户的身份信息;生成所述用户的身份信息列表,基于所述身份信息列表、所述主公钥和所述主私钥生成第一子私钥,所述身份信息列表中包括所述第一账户和所述身份信息;将所述第一子私钥和所述身份信息列表发送给所述区块链;所述区块链用于存储所述第一子私钥和所述身份信息列表;所述用户设备用于从所述区块链获取所述第一子私钥和所述身份信息列表,基于所述第一子私钥和预设策略信息进行属性签名,生成所述第一账户的身份签名,所述预设策略信息包括所述第一账户和所述用户的身份标识。2.根据权利要求1所述的系统,所述用户设备还用于将所述身份签名发送给所述区块链,所述区块链还用于关联地存储所述身份签名与所述第一账户。3.根据权利要求1或2所述的系统,所述区块链中部署有第一合约,所述管理设备在将所述第一子私钥和所述身份信息列表发送给所述区块链时具体用于:向所述区块链发送调用所述第一合约的第一交易,所述第一交易中包括所述第一子私钥和所述身份信息列表;所述区块链在存储所述第一子私钥和所述身份信息列表时具体用于:根据所述第一交易在所述第一合约的合约状态中的账户信息列表中与所述第一账户关联地存储所述第一子私钥和所述身份信息列表。4.根据权利要求3所述的系统,其中,所述第一合约使得所述第一子私钥和所述身份信息列表在被存储到所述账户信息列表之后不可更新、且不可删除。5.根据权利要求3所述的系统,所述第一交易中包括第一账户和第一密文,所述第一密文通过使用所述第一账户的公钥对所述第一账户的子私钥和所述身份信息列表进行加密生成,所述区块链在存储所述第一子私钥和所述身份信息列表时具体用于:在所述账户信息列表中与所述第一账户关联地存储所述第一密文。6.根据权利要求3所述的系统,所述用户设备还用于生成所述第一账户,通过所述第一账户向所述区块链发送调用所述第一合约的第二交易,所述第二交易中包括所述第一账户对应的用户的身份信息,所述区块链还用于根据所述第二交易将所述身份信息与所述第一账户关联地存储到所述第一合约的合约状态中。7.根据权利要求6所述的系统,所述第二交易中包括所述用户身份信息的第二密文,所述第二密文使用所述管理设备对应的第二账户的公钥加密生成,所述区块链在存储所述用户身份信息时具体用于将所述第二密文与所述第一账户关联地存储到所述第一合约的合约状态中。8.根据权利要求1或2所述的系统,所述系统还包括认证设备,所述认证设备用于:从所述区块链获取所述主公钥和所述第一账户的身份签名;使用所述主公钥和所述预设策略信息对所述身份签名进行验证,在验证通过的情况下,向所述区块链上传所述第一账户对应的用户属性信息;所述管理设备还用于从所述区块链获取所述第一账户的用户属性信息,生成所述第一账户的属性列表,所述属性列表中包括所述第一账户和所述用户属性信息,基于所述属性
列表、所述主公钥和主私钥生成第二子私钥,将所述第二子私钥和所述属性列表上传至所述区块链;所述用户设备还用于从所述区块链获取所述第二子私钥和所述属性列表,基于所述第二子私钥和第二策略信息进行属性签名,得到第二签名,所述第二策略信息包括所述属性列表中的所述第一账户和至少一项属性信息。9.根据权利要求6所述的系统,其中,所述用户设备还用于:通过所述第一账户向所述区块链发送创建所述第一账户的第三交易;所述区块链还用于根据所述第三交易在状态数据库中创建所述第一账户。10.一种数字身份管理方法,由区块链节点执行,所述区块链中存储有第一账户对应的用户的身份信息,所述方法包括:将所述第一账户对应的用户的身份信息发送给管理设备,所述管理设备包括用于基于属性加密算法生成的主公钥和主私钥;从所述管理设备接收所述第一账户对应的第一子私钥和身份信息列表,所述身份信息列表中包括所述第一账户和所述身份信息,所述第一子私钥基于所述身份信息列表、所述主公钥和所述主私钥生成;存储所述第一子私钥和所述身份信息列表;将所述第一子私钥和所述身份信息列表发送给用户设备,以使得所述用户设备基于所述第一子私钥和预设策略信息进行属性签名,生成所述第一账户的身份签名,所述预设策略信息包括所述第一账户和所述用户的身份标识。11.根据权利要求10所述的方法,还包括:从所述用户设备接收所述身份签名,关联地存储所述身份签名与所述第一账户。12.根据权利要求10或11所述的方法,所述区块链中部署有第一合约,所述从所述管理设备接收所述第一账户对应的第一子私钥和身份信息列表包括,从所述管理设备接收调用所述第一合约的第一交易,所述第一交易中包括所述第一子私钥和所述身份信息列表;所述存储所述第一子私钥和所述身份信息列表包括:在所述第一合约的合约状态中的账户信息列表中与所述第一账户关联地存储所述第一子私钥和所述身份信息列表。13.根据权利要求12所述的方法,其中,所述第一合约使得所述第一子私钥和所述身份信息列表在被存储到所述账户信息列表之后不可更新、且不可删除。14.根据权利要求12所述的方法,所述第一交易中包括所述第一账户和第一密文,所述第一密文通过使用所述第一账户的公钥对所述第一账户的子私钥和所述身份信息列表进行加密生成,所述在所述账户信息列表中与所述第一账户关联地存储所述第一子私钥和所述身份信息列表包括:在所述账户信息列表中与所述第一账户关联地存储所述第一密文。15.一种区块链节点,所述区块链中存储有第一账户对应的用户的身份信息,所述节点包括:发送单元,用于将所述第一账户对应的用户的身份信息发送给管理设备,所述管理设备包括用于基于属性加密算法生成的主公钥和主私钥;接收单元,用于从所述管理设备接收所述第一账户对应的第一子私钥和身份信息列表,所述身份信息列表中包括所述第一账户和所述身份信息,所述第一子私钥基于所述身份信息列表、所述主公钥和所述主私钥生成;
存储单元,用于存储所述第一子私钥和所述身份信息列表;所述发送单元还用于,将所述第一子私钥和所述身份信息列表发送给用户设备,以使得所述用户设备基于所述第一子私钥和预设策略信息进行属性签名,生成所述第一账户的身份签名,所述预设策略信息包括所述第一账户和所述用户的身份标识。16.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求10-14中任一项的所述的方法。
技术总结一种数字身份管理方法、区块链节点和系统,所述系统包括管理设备、区块链和用户设备,区块链中存储有第一账户对应的用户的身份信息,管理设备包括主公钥和主私钥,管理设备用于:从区块链获取所述第一账户对应的用户的身份信息;生成所述用户的身份信息列表,基于所述身份信息列表、所述主公钥和所述主私钥生成第一子私钥;将所述第一子私钥和所述身份信息列表发送给所述区块链;所述区块链用于存储所述第一子私钥和所述身份信息列表;所述用户设备用于从区块链获取第一子私钥和身份信息列表,使用第一子私钥和预设策略信息生成一账户的身份签名。的身份签名。的身份签名。
技术研发人员:张如意
受保护的技术使用者:蚂蚁区块链科技(上海)有限公司
技术研发日:2022.06.24
技术公布日:2022/11/1