CN115134136B - 基于区块链进行社交的系统、方法、装置、存储介质和计算设备 - Google Patents

基于区块链进行社交的系统、方法、装置、存储介质和计算设备 Download PDF

Info

Publication number
CN115134136B
CN115134136B CN202210722710.XA CN202210722710A CN115134136B CN 115134136 B CN115134136 B CN 115134136B CN 202210722710 A CN202210722710 A CN 202210722710A CN 115134136 B CN115134136 B CN 115134136B
Authority
CN
China
Prior art keywords
social
account
blockchain
attribute
information
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.)
Active
Application number
CN202210722710.XA
Other languages
English (en)
Other versions
CN115134136A (zh
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.)
Ant Blockchain Technology Shanghai Co Ltd
Original Assignee
Ant Blockchain Technology Shanghai 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 Ant Blockchain Technology Shanghai Co Ltd filed Critical Ant Blockchain Technology Shanghai Co Ltd
Priority to CN202210722710.XA priority Critical patent/CN115134136B/zh
Publication of CN115134136A publication Critical patent/CN115134136A/zh
Application granted granted Critical
Publication of CN115134136B publication Critical patent/CN115134136B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking
    • 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/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • 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)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Health & Medical Sciences (AREA)
  • Economics (AREA)
  • Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本说明书实施例提供了基于区块链进行社交的系统、方法和装置。区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于主公钥和加密策略进行属性加密而获得;第二用户设备向区块链上传关系创建信息;管理设备从区块链获取关系创建信息,基于关系创建信息生成第二用户设备对应的第二账户的社交属性,将社交属性存储到针对第二账户预设的社交属性列表中,并基于社交属性列表、主公钥和主私钥生成第二账户的社交子私钥,将社交子私钥上传至区块链,社交属性包括第一账户;第二用户设备从区块链获取社交子私钥和加密社交信息,并使用社交子私钥对加密社交信息进行解密,在社交属性列表符合加密策略的情况中,解密成功,得到社交信息。

Description

基于区块链进行社交的系统、方法、装置、存储介质和计算 设备
技术领域
本说明书实施例属于区块链技术领域,尤其涉及基于区块链进行社交的系统,以及基于区块链进行社交的方法和装置。
背景技术
随着通信技术的快速发展,互联网已经逐渐成为了人们获取信息的一个重要途径。比如,用户可以通过各种各样的社交平台获取和发布消息,比如,查看或发布文字、图片、视频等等。基于社交平台,用户之间可以通过加好友、加关注等方式建立社交关系。通常发布者通过社交平台发布的信息会被直接公开给全部用户,并且发布者不能选择所发布内容的传播的方式,不能定向的发布内容。也就是说,社交网络现状让用户在社交平台上无法掌控内容的传播和接收。
发明内容
本说明书的一个或多个实施例描述了一种基于区块链进行社交的系统,以及基于区块链进行社交的方法和装置。
根据第一方面,提供了一种基于区块链进行社交的系统,上述系统包括第一用户设备、第二用户设备、管理设备和区块链,上述管理设备包括基于属性加密算法生成的主公钥和主私钥,上述区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于主公钥和加密策略进行属性加密而获得;上述第二用户设备用于向上述区块链上传关系创建信息,其中,上述关系创建信息包括第一账户;上述管理设备用于从上述区块链获取上述关系创建信息,基于上述关系创建信息生成上述第二用户设备对应的第二账户的社交属性,将上述社交属性存储到针对上述第二账户预设的社交属性列表中,并基于上述社交属性列表、上述主公钥和主私钥生成上述第二账户的社交子私钥,将上述社交子私钥上传至区块链,其中,上述社交属性包括上述第一账户,用于指示上述第一账户和第二账户存在社交关系;上述第二用户设备用于从上述区块链获取上述社交子私钥和上述加密社交信息,并使用上述社交子私钥对上述加密社交信息进行解密,在上述社交属性列表符合上述加密策略的情况中,解密成功,得到社交信息。
根据第二方面,提供了一种基于区块链进行社交的方法,应用于区块链的节点,上述区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于管理设备的主公钥和加密策略进行属性加密而获得,上述方法包括:接收关系创建信息,其中,上述关系创建信息包括第一账户;将上述关系创建信息发送给上述管理设备,以便上述管理设备基于上述关系创建信息执行以下操作:基于上述关系创建信息生成上述第二账户的社交属性,将上述社交属性存储到针对上述第二账户预设的社交属性列表中,基于上述社交属性列表、上述主公钥和主私钥生成上述上述第二账户的社交子私钥;接收上述管理设备发送的上述社交子私钥;将上述社交子私钥和上述加密社交信息发送给上述第二用户设备,以便上述第二用户设备使用上述社交子私钥对上述加密社交信息进行解密,在上述上述社交属性列表符合上述加密策略的情况中,解密成功,得到社交信息。
根据第三方面,提供了一种基于区块链进行社交的方法,应用于目标社交应用的服务器,上述区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于管理设备的主公钥和加密策略进行属性加密而获得,上述方法包括:接收第二账户对应的第二用户设备发送的关系创建信息,并将上述关系创建信息上传到上述区块链,其中,上述关系创建信息包括第一账户;从上述区块链获取上述加密社交信息和上述第二账户的社交子私钥,并将上述社交子私钥和上述加密社交信息发送给上述第二用户设备,以便第二用户设备使用上述社交子私钥对上述加密社交信息进行解密,在上述上述社交属性列表符合上述加密策略的情况中,解密成功,得到社交信息;其中,上述社交子私钥是上述管理设备通过以下方式生成后上传到上述区块链的:基于上述关系创建信息生成上述第二账户的社交属性,将上述社交属性存储到针对上述第二账户预设的社交属性列表中,并基于上述社交属性列表、上述主公钥和主私钥生成上述第二账户的社交子私钥。
根据第四方面,提供了一种基于区块链进行社交的装置,设置于区块链的节点,上述区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于管理设备的主公钥和加密策略进行属性加密而获得,上述装置包括:第一接收单元,配置为接收关系创建信息,其中,上述关系创建信息包括第一账户;第一发送单元,配置为将上述关系创建信息发送给上述管理设备,以便上述管理设备基于上述关系创建信息执行以下操作:基于上述关系创建信息生成上述第二账户的社交属性,将上述社交属性存储到针对上述第二账户预设的社交属性列表中,基于上述社交属性列表、上述主公钥和主私钥生成上述上述第二账户的社交子私钥;第二接收单元,配置为接收上述管理设备发送的上述社交子私钥;第二发送单元,配置为将上述社交子私钥和上述加密社交信息发送给上述第二用户设备,以便上述第二用户设备使用上述社交子私钥对上述加密社交信息进行解密,在上述上述社交属性列表符合上述加密策略的情况中,解密成功,得到社交信息。
根据第五方面,提供了一种基于区块链进行社交的装置,设置于目标社交应用的服务器,上述区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于管理设备的主公钥和加密策略进行属性加密而获得,上述装置包括:信息接收单元,配置为接收第二账户对应的第二用户设备发送的关系创建信息,并将上述关系创建信息上传到上述区块链,其中,上述关系创建信息包括第一账户;子私钥发送单元,配置为从上述区块链获取上述加密社交信息和上述第二账户的社交子私钥,并将上述社交子私钥和上述加密社交信息发送给上述第二用户设备,以便第二用户设备使用上述社交子私钥对上述加密社交信息进行解密,在上述上述社交属性列表符合上述加密策略的情况中,解密成功,得到社交信息;其中,上述社交子私钥是上述管理设备通过以下方式生成后上传到上述区块链的:基于上述关系创建信息生成上述第二账户的社交属性,将上述社交属性存储到针对上述第二账户预设的社交属性列表中,并基于上述社交属性列表、上述主公钥和主私钥生成上述第二账户的社交子私钥。
根据第六方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当上述计算机程序在计算机中执行时,令计算机执行如第二方面或者第三方面中任一实现方式描述的方法。
根据第七方面,提供了一种计算设备,包括存储器和处理器,其特征在于,上述存储器中存储有可执行代码,上述处理器执行上述可执行代码时,实现如第二方面或者第三方面中任一实现方式描述的方法。
根据本说明书的一个实施例提供的基于区块链进行社交的系统,该系统包括第一用户设备、第二用户设备、管理设备和区块链,其中,管理设备包括用于基于属性加密算法生成的主公钥和主私钥,区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于主公钥和加密策略进行属性加密而获得,其中,加密策略可以用于规定拥有那些属性的账户可以解密。第二用户设备可以向区块链上传用于和第一账户建立社交关系的关系创建信息,其中,关系创建信息可以包括第一账户。管理设备可以从区块链获取第二用户上传的该关系创建信息,基于该关系创建信息生成第二用户设备对应的第二账户的社交属性,该社交属性可以包括第一账户,社交属性可以用于指示第一账户和第二账户存在社交关系。之后,管理设备可以将该社交属性存储到针对第二账户预设的社交属性列表中。管理设备还可以基于社交属性列表、主公钥和主私钥生成第二账户的社交子私钥,并将社交子私钥上传至区块链。第二用户设备可以从区块链获取社交子私钥和加密社交信息,并使用社交子私钥对加密社交信息进行解密,在社交属性列表符合加密策略的情况中,解密成功,得到社交信息。本系统中,只有社交属性列表与加密社交信息对应的加密策略相符合的设备才能对加密社交信息解密成功,得到社交信息,从而实现了对社交信息的保护。同时,发布社交信息的账户可以通过设置加密策略来规定拥有那些社交属性的账户可以解密获取社交信息,从而实现了对所发布社交信息传播和接收的控制。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了一个实施例中的区块链架构图;
图2示出了本说明书实施例中的基于区块链进行社交的系统可以应用于其中的一个应用场景的示意图;
图3示出了以第一用户为例创建第一用户的数字身份的一个流程的示意图;
图4示出了基于区块链进行社交的系统中第一用户设备、第二用户设备、管理设备和区块链之间进行交互的一个示例的时序图;
图5示出了一个加密策略的示意图;
图6示出了根据一个实施例的基于区块链进行社交的装置的示意性框图;
图7示出了根据另一个实施例的基于区块链进行社交的装置的示意性框图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
区块链技术最初是由一位化名“中本聪”的人为比特币(一种数字货币)而设计出的一种特殊的分布式数据库技术,它适合存储简单的、有先后关系的、能在系统内验证的数据,用密码学和共识算法保证了数据的不可篡改和不可伪造。为了进一步说明区块链技术,图1示出了一实施例中的区块链架构图。在图1所示的区块链架构图中,区块链100中例如包含6个节点。节点之间的连线示意性的表示P2P(Peer to Peer,点对点)连接。这些节点上可存储全量的账本,即存储全部区块和全部账户的状态。其中,区块链中的每个节点可通过执行相同的交易而产生区块链中的相同的状态,区块链中的每个节点可存储相同的状态数据库。可以理解,图1中虽然示出了区块链中包括6个节点,本说明书实施例不限于此,而是可以包括其他数目的节点。具体是,区块链中包含的节点可以满足拜占庭容错(ByzantineFault Tolerance,BFT)要求。所述的拜占庭容错要求可以理解为在区块链内部可以存在拜占庭节点,而区块链对外不体现拜占庭行为。一般的,一些拜占庭容错算法中要求节点个数大于3f+1,f为拜占庭节点个数,例如实用拜占庭容错算法PBFT(Practical ByzantineFault Tolerance)。
区块链领域中的交易可以指在区块链中执行并记录在区块链中的任务单元。交易中通常包括发送字段(From)、接收字段(To)和数据字段(Data)。其中,在交易为转账交易的情况中,From字段表示发起该交易(即发起对另一个账户的转账任务)的账户地址,To字段表示接收该交易(即接收转账)的账户地址,Data字段中包括转账金额。在交易调用区块链中的智能合约的情况中,From字段表示发起该交易的账户地址,To字段表示交易所调用的合约的账户地址,Data字段中包括调用合约中的函数名、及对该函数的传入参数等数据,以用于在交易执行时从区块链中获取该函数的代码并执行该函数的代码。
区块链中可提供智能合约的功能。区块链上的智能合约是在区块链系统上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。在以太坊中调用智能合约,是发起一笔指向智能合约地址的交易,使得以太坊网络中每个节点分布式地运行智能合约代码。需要说明的是,除了可以由用户创建智能合约,也可以在创世块中由系统设置智能合约。这类合约一般称为创世合约。一般的,创世合约中可以设置一些区块链的数据结构、参数、属性和方法。此外,具有系统管理员权限的账户可以创建系统级的合约,或者修改系统级的合约(简称为系统合约)。其中,所述系统合约可用于在区块链中增加不同需求的数据的数据结构。
在部署合约的场景中,例如,Bob将一个包含创建智能合约信息(即部署合约)的交易发送到如图1所示的区块链中,该交易的data字段包括待创建的合约的代码(如字节码或者机器码),交易的to字段为空,以表示该交易用于部署合约。节点间通过共识机制达成一致后,确定合约的合约地址“0x6f8ae93…”,各个节点在状态数据库中添加与该智能合约的合约地址对应的合约账户,分配与该合约账户对应的状态存储,并将合约代码保存在该合约的状态存储中,从而合约创建成功。
在调用合约的场景中,例如,Bob将一个用于调用智能合约的交易发送到如图1所示的区块链中,该交易的from字段是交易发起方(即Bob)的账户的地址,to字段中的“0x6f8ae93…”代表了被调用的智能合约的地址,交易的data字段包括调用智能合约的方法和参数。在区块链中对该交易进行共识之后,区块链中的各个节点可分别执行该交易,从而分别执行该合约,基于该合约的执行更新状态数据库。
如前所述,社交网络现状让用户在社交平台上无法掌控内容的传播和接收。为此,本说明书的一个实施例提供了一种基于区块链进行社交的系统,实现了对发布者所发布的社交信息的保护,同时社交信息发布者可以通过设置加密策略来指定可以解密获得社交信息的账户。作为示例,图2示出了本说明书实施例的基于区块链进行社交的系统可以应用于其中的一个应用场景的示意图。如图2所示,在本应用场景中,可以包括账户A对应的设备201、账户B对应的设备202、管理设备203和区块链100。这里,管理设备203可以是管理机构对应的设备,监管机构可以负责为用户分配属性标签,生成子私钥等等。这里,账户A对应的设备201、账户B对应的设备202和管理设备203中可以设置有加密模块,举例来说,可以设置有CP-ABE(ciphertextpolicy attribute based encryption,基于密文策略的属性加密)加密模块,CP-ABE的密文对应于一个访问策略,密钥对应属性集合,当且仅当属性集合中的属性能够满足此访问策略时才可对密文进行解密。管理设备203可以基于属性加密算法生成的主公钥和主私钥,并将主公钥上传到区块链100。账户B的设备202可以基于主公钥和加密策略对想要发布的社交信息进行属性加密,从而得到加密社交信息,并将加密社交信息存储到区块链100中。账户B对应的用户B可以通过加密策略规定满足那些属性的账户可以对加密社交信息解密成功。账户A的设备201可以向区块链100上传用于与账户B建立社交关系(例如,加关注、加好友等等)的关系创建信息,该关系创建信息可以包括账户B。管理设备203内部可以预先存储有针对账户A的社交属性列表,基于此,管理设备203可以从区块链100获取账户A的设备201上传的关系创建信息,并基于关系创建信息生成账户A的社交属性,该社交属性用于指示账户A和账户B存在社交关系。管理设备203可以将社交属性存储到针对账户A的社交属性列表。之后,管理设备203可以基于社交属性列表、主公钥和主私钥生成账户A对应的社交子私钥,并将社交子私钥上传至区块链。这样,账户A的设备201可以从区块链100获取社交子私钥和加密社交信息,并使用社交子私钥对加密社交信息进行解密,在账户A对应的社交属性列表符合加密策略的情况中,解密成功,得到社交信息。
用户在参与物理世界的活动时,会对应一个用于描述自己的身份,身份可以包括姓名、工作、学历、婚姻状态等等。同样,用户参与网络世界的活动时,也需要使用一个数字身份。数字身份是指描述一个用户的一组数据,是网络世界中关于一个用户的所有信息的总和。数字身份可以由各种各样的属性汇总而成,也就是说,数字身份可以通过属性描述,比如,姓名、身份标识、出生日期、出生地、工作地、职位、学历、证书编号、婚姻状态等等,属性组成了一个完整的身份实体。
作为示例,图3示出了以第一用户为例创建第一用户的数字身份的一个流程的示意图,其他用户也可以通过相同的方式创建数字身份。在图3所示的示例中,与区块链100进行交互的第一用户设备301、管理设备203和认证设备204中可以设置有CP-ABE加密模块。具体创建用户的数字身份的过程可以如下所示:
S301,管理设备203生成主公钥和主私钥。
作为一个示例,管理设备203可以通过调用CP-ABE加密模块的Setup函数来生成主公钥和主私钥,主公钥可以上传到区块链100上公开,主私钥由管理设备203保管,不能泄露。这里,管理设备203可以是管理机构对应的设备。作为另一个示例,也可以采用安全多方计算的方式来生成主公钥和主私钥,主私钥由多个管理设备203共同维护,需要使用主私钥时由多个管理设备203同时参与计算。主公钥和主私钥的生成过程可以如下:CPABE_Setup(msk,mpk),其中,mpk可以表示主公钥,msk可以表示主私钥。
S302,管理设备203向区块链100上传主公钥。
本实施例中,管理设备203可以向区块链100的任一区块链节点发送交易Tx1,该交易Tx1可由管理设备203对应的管理机构的区块链账户A1发送,账户A1对应于账户私钥systemSK和账户公钥systemPK,私钥systemSK可用于生成交易Tx1的数字签名,公钥systemPK可用于对该数字签名进行验证。该交易Tx1可以调用区块链中的数据管理合约C1(下文中简称为合约C1),以向区块链上传主公钥。其中,该合约可由管理设备203部署到区块链中,以进行对区块链账户对应的数字身份的管理。上述区块链节点在接收到该交易之后将该交易发送给区块链中的其他节点,从而使得区块链中的各个节点可执行该交易。区块链的各个节点通过执行该交易,将主公钥存储到合约C1的合约状态中。
在一种实施方式中,交易Tx1中还可以包括账户A1对应的公钥,本例中称系统公钥systemPK,从而区块链100中的各个节点通过执行交易Tx1还将系统公钥systemPK存储到区块链中,系统公钥systemPK除了可用于验证账户A1的数字签名之外,其他设备还可以使用系统公钥systemPK对上传到区块链的数据进行加密,从而使得该数据只允许管理设备203通过使用系统私钥systemSK进行解密而获取到该数据。可以理解,区块链中的各个节点可以通过其他方式获取系统公钥systemPK,例如,可从管理机构的官方主页中获取,或者可以从秘钥管理机构获取等,对此不作限定。
S303,认证设备204从区块链100获取主公钥。
认证设备204可通过向区块链100中的任一节点发送调用合约C1的查询交易,从而从该任一节点接收到主公钥mpk。同时,认证设备204也可以类似地从区块链获取管理设备203对应的账户A1的公钥systemPK。
实践中,当个人在大学完成学业后,会获得相应的学历、学位认证,物理世界中会获得与教育相关的认证机构颁发的纸质证书。数字世界中,认证机构也应为个人所对应的账户颁发学历、学位属性。这里,认证设备可以是社会上可以为个人颁发属性的一些主体所使用的设备。比如,与教育有关的主体可以颁发学历、学位属性,与结婚登记事务有关的主体可以颁发结婚状态属性,与培训相关的主体可以颁发技能培训属性,等等。
认证设备可以向区块链100上传认证机构的机构信息,例如,直接上传。其中,机构信息可以包括与机构相关的各种信息,包括但不限于机构的类型、机构的级别、机构所处地点、证件信息、证明材料等等。此外,认证设备还可以向区块链100上传非对称加密的公钥companyPK,认证设备本地安全保存companyPK对应的私钥companySK。companyPK可以用于后续加密信息传输。
这里,认证设备上传的机构信息还可以用于在区块链上注册机构链上账户。基于此,认证设备可以接收区块链100返回的链上账户信息,例如,链上账户ID。作为示例,认证设备还可以使用系统公钥systemPK对机构信息进行加密,并将加密后的机构信息上传到区块链100。以ECIES为例,可以通过调用ENCRYPT进行加密,具体的,
companyInfoCipher=ECIES_ENCRYPT(systemPK,companyInfo)。
其中,companyInfo可以表示机构信息。companyInfoCipher可以表示加密后的机构信息。此时,companyID可以通过以下方式生成:
companyID=RegisterCompany(companyInfoCipher,companyPK)。
实践中,区块链100可以基于认证设备上传的机构信息直接生成认证设备对应认证机构的链上账户信息,并将链上账户信息返回给认证设备。区块链100也可以在管理设备203对认证设备上传的机构信息进行校验后,再基于机构信息生成认证设备对应的链上账户信息。具体的,管理设备203监听到链上RegisterCompany合约调用事件后,可以获取认证设备上传的机构信息。如果管理设备203获取的机构信息为加密后的机构信息companyInfoCipher,则管理设备203可以使用系统私钥systemSK对获取的加密后的机构信息进行解密,具体的,
companyInfo=ECIES_DECRYPT(systemSK,companyInfoCipher)。
之后,管理设备203可以对机构信息进行校验(例如,进行身份校验和鉴定等等),校验通过后,向区块链100上传校验通过信息,接收到该校验通过信息之后,区块链可以基于机构信息生成认证设备对应的链上账户信息,并将链上账户信息返回给认证设备。
管理设备203从区块链100获取认证设备上传的机构信息后,可以基于机构信息确定认证设备对应的机构属性标签,并基于机构属性标签、主公钥和主私钥生成认证设备的机构子私钥,并将机构子私钥上传至区块链100。
这里,机构属性标签可以是一类特征的总和,例如,机构的类型,可以包括技能培训、证书培训、幼儿兴趣培训等等;机构的级别,可以包括省级、市级等等;机构所处地点:上海、北京、福建等等。之后,管理设备203可以基于机构属性标签、主公钥和主私钥生成认证设备的机构子私钥。举例来说,管理设备203可以通过调用CP-ABE的KeyGen函数生成认证设备的机构子私钥。管理设备203可以将生成的机构子私钥上传至区块链100,例如,将机构属性标签和机构子私钥使用认证设备对应的账户的公钥companyPK加密后上传到区块链100。认证设备可以从区块链100获取机构子私钥,如果所获取的机构子私钥为加密的机构子私钥,可以解密得到机构子私钥。通过本实现方式,认证设备可以得到机构子私钥。
S304,第一用户设备301向区块链100上传第一用户的身份信息。
在本实施例中,第一用户设备301可以向区块链100上传第一用户的身份信息。其中,第一用户的身份信息可以是与第一用户的身份相关的各种信息,包括但不限于姓名、昵称、身份证明图片、护照图片等等。第一用户设备301还可以向区块链100上传非对称加密的公钥accountPK,第一用户设备301本地安全保存accountPK对应的私钥accountSK。公钥accountPK可以用于后续加密信息传输。
这里,第一用户设备301上传的第一用户的身份信息还可以用于在区块链上注册个人链上账户。基于此,第一用户设备301可以接收区块链100返回的链上账户信息,例如,链上账户ID。具体的,第一用户设备301可以向区块链100发送交易,该交易可以调用合约C1,以向区块链注册外部所有账户(Externally Owned Accounts,EOA)。区块链的节点执行该交易,生成链上账户信息,并将链上账户信息返回给第一用户设备301。区块链可以将生成的第一用户设备301的账户信息存储到合约账户下。举例来说,可以将第一用户的身份信息中包括的信息进行拼接后再进行哈希计算,从而得到链上账户ID。具体的,
accountID=RegisterAccount(accountInfo,accountPK)=HASH(accountInfo||accountPK)。
其中,accountInfo表示第一用户的身份信息,accountID表示第一用户对应的链上账户ID。
实践中,区块链100可以基于第一用户设备301上传的第一用户的身份信息直接生成第一用户对应的链上账户信息,并将链上账户信息返回给第一用户设备301。区块链100还可以在管理设备203对第一用户设备301上传的第一用户的身份信息进行校验后,再基于第一用户的身份信息生成第一用户设备对应的链上账户信息,之后,再将链上账户信息返回给第一用户设备301。具体的,管理设备203监听到链上RegisterAccount合约调用事件后,可以获取第一用户设备301上传的第一用户的身份信息,并对第一用户的身份信息进行校验(例如,进行身份校验和鉴定等),校验通过后,向区块链100上传校验通过信息。接收到该校验通过信息之后,区块链100可以基于第一用户的身份信息创建第一用户设备301对应的链上账户信息,并将链上账户信息返回给第一用户设备301。
在一些可选的实现方式中,如前所述可知,管理设备203可以生成系统的加密认证密钥对,其中,加密认证密钥对可以包括系统公钥systemPK和系统私钥systemSK,该密钥对可以支持非对称加密算法和签名算法,例如,椭圆曲线密码学(Elliptic curvecryptography,ECC)算法密钥,支持椭圆曲线数字签名算法(Elliptic Curve DigitalSignature Algorithm,ECDSA)和椭圆曲线综合加密方案(elliptic curve integrateencrypt scheme,ECIES)加解密算法。以ECC为例,可以通过调用KeyGen生成系统公钥systemPK和系统私钥systemSK,具体计算过程如下:
systemPK,systemSK=ECC_KeyGen()。
基于此,第一用户设备301可以使用从区块链获取的系统公钥systemPK对第一用户的身份信息进行加密,并将加密后的身份信息上传到区块链100。以ECIES为例,可以通过调用ENCRYPT进行加密,具体的,
accountInfoCipher=ECIES_ENCRYPT(systemPK,accountInfo)。
其中,accountInfo表示第一用户的身份信息,accountInfoCipher表示加密后的第一用户的身份信息。此时,accountID可以通过以下方式生成:
accountID=RegisterAccount(accountInfoCipher,accountPK)。
通过本实现方式,第一用户设备301可以将第一用户的身份信息加密后再上传,从而使第一用户的身份信息更加安全。
S305,管理设备203从区块链获取第一用户的身份信息。
这里,管理设备203可以从区块链100获取第一用户设备301上传的第一用户的身份信息。如果管理设备203获取的第一用户的身份信息为加密后的第一用户的身份信息accountInfoCipher,则管理设备203可以使用系统私钥systemSK对获取的加密后的第一用户的身份信息进行解密,具体的,
accountInfo=ECIES_DECRYPT(systemSK,accountInfoCipher)。
S306,管理设备203生成第一用户的属性列表和第一子私钥。
在本实施例中,管理设备203在对第一用户的身份信息校验通过之后,可以由区块链的节点创建第一用户对应的区块链账户,本例中,可以称为第一账户。第一用户可以拥有该第一账户。之后,管理设备203可以基于第一用户设备301上传的第一用户的身份信息生成第一用户对应的属性列表Attrilist,该属性列表Attrilist中可以包括第一账户和第一用户的身份属性。第一用户的属性列表Attrilist中可以包括第一用户的多个属性标签,属性标签可以是一类特征的总和,可以是描述第一用户的一组数据。作为示例,第一用户的属性列表中包括的属性可以用于描述第一用户的基本身份,例如,属性列表中可以包括但不限于第一账户、姓名、昵称、身份标识等属性。之后,管理设备203可以基于属性列表Attrilist、主公钥和主私钥生成第一子私钥。举例来说,管理设备203可以通过CP-ABE的KeyGen函数生成第一用户设备301对应的第一子私钥sk,具体的,
sk=CPABE_KeyGen(Attrilist,msk,mpk)。
由上式可知,对函数CPABE_keygen()的输入参数包括属性列表、msk和mpk三项,通过基于属性加密算法生成子私钥sk,该子私钥sk可用于基于签名策略进行属性签名,得到签名,以用于证明第一账户对应的第一用户具有属性列表中的特定属性(即满足签名策略),而mpk可用于基于签名策略验证该签名为真,即验证第一账户对应的第一用户具有属性列表中的特定属性。
S307,管理设备203将第一子私钥和属性列表上传至区块链100,区块链100可以与第一账户关联地存储属性列表和第一子私钥。
在本实施例中,管理设备203生成第一子私钥和属性列表之后,可以将第一用户设备对应的区块链账户accountID与第一子私钥上传至区块链100,以供第一用户设备301从区块链获取第一子私钥。
在一些可选的实现方式中,区块链100中可以部署有合约C1,以及上述S307还可以具体如下实现:
①,管理设备203可以基于第一账户对应的公钥accountPK对第一子私钥进行加密,得到加密子私钥。
作为一个示例,管理设备203可以使用第一账户的公钥采用加密方案,例如ECIES(elliptic curve integrate encrypt scheme,椭圆曲线综合加密方案),对第一子私钥进行加密,得到第一加密子私钥,并将第一账户与第一加密子私钥关联地上传至区块链。这样,第一用户设备301可以从区块链获取自身区块链账户对应的第一加密子私钥,并通过解密第一加密子私钥可以得到第一子私钥。
作为另一个示例,管理设备203还可以使用第一账户的公钥accountPK对第一用户的属性列表和第一子私钥进行加密,得到第二加密子私钥,具体的,
第二加密子私钥=ECIES_ENCRYPT(accountPK,Attrilist,sk)。
第一用户设备301通过解密第二加密子私钥可以得到对应的属性列表Attrilist和第一子私钥。
②,管理设备203将第一账户和加密子私钥关联地上传至区块链100,以便第一用户设备301从区块链100获取到加密子私钥后,解密得到第一子私钥。
举例来说,管理设备203可以向区块链100发送调用合约C1的第一交易,该第一交易中包括第一账户和加密子私钥(例如,第一加密子私钥或者第二加密子私钥)。区块链的节点通过执行该第一交易,可以将管理设备203上传的、针对第一用户设备301生成的加密子私钥accountCipher存储到链上合约C1的合约状态中。例如,可以预先设置一个账户信息列表accountInfoList,该账户信息列表accountInfoList中存储的各条信息可以包含数据{accountID,accountPK,accountCipher}。这样,第一用户设备301可以根据accountID从区块链100获取对应的加密子私钥accountCipher,并使用accountPK对应的私钥accountSK对加密子私钥进行解密得到第一子私钥。作为示例,当加密子私钥accountCipher为第二加密子私钥时,第一用户设备301可以通过解密得到第一子私钥和属性列表Attrilist,具体的:
Attrilist,sk=ECIES_DECRYPT(accountSK,第二加密子私钥)。
通过本实现方式,可以将第一子私钥进行加密后再上传至区块链,由此,可以实现对第一子私钥的保护,提高了第一子私钥的安全性。
S308,第一用户设备301可以从区块链100获取第一子私钥和属性列表。
S309,第一用户设备301可以基于预设的签名策略和第一子私钥进行属性签名得到签名。
在本实现方式中,第一用户设备301需要向认证机构204证明区块链账户accountID是自己的链上账户ID,为此,第一用户设备301可以生成签名,其中,该签名可以是通过基于预设的签名策略和第一子私钥进行属性签名得到的,该签名可以用于向认证设备204证明第一用户的身份属性和第一账户是关联的。这里,预设的签名策略可以包括第一用户的身份属性和区块链账户,即,第一账户。
举例来说,可以使用基于属性的签名(attribute-based signature,ABS)进行属性签名。ABS是一种公钥签名验证算法,用户的密钥和签名结构取决于属性。只有当用户密钥的属性集(包括多个属性标签)与签名策略相匹配时,才能签名并验证成功。本例中,第一用户设备301可以基于签名属性policy1:{身份属性and区块链账户}、第一子私钥sk对第一用户的身份属性(例如,身份标识)和区块链账户所组合的组合信息的摘要data1进行属性签名,得到签名sign1。具体的,
Data1=HASH("身份属性"+accountID),
Sign1=ABS_Sign(sk,policy1,data1)。
S310,第一用户设备301将签名和签名策略发送给认证设备204。
具体是,为了保护签名策略policy1中的信息,第一用户设备301可以使用认证设备204对应的认证机构的公钥对签名Sign1和签名策略policy1进行加密,并将加密得到的密文发送给认证设备204,从而认证设备204可通过使用认证设备204的私钥对密文进行解密得到签名Sign1和签名策略policy1。
S311,认证设备204基于预先获取的主公钥和签名策略policy1对签名Sign1进行验证。
本实施例中,认证设备204可以基于签名策略policy1和管理设备的主公钥mpk对签名Sign1进行验证。举例来说,具体计算可以如下:
Data1=HASH("身份属性"+accountID),
result1=ABS_Verify(mpk,policy1,data1,sign1)。
只有result1为true的情况下,才能证明第一用户的身份属性和区块链账户是一一绑定的。即,证明区块链账户是第一用户的身份属性对应的链上账户。
S312,在验证通过的情况中,认证设备204将第一账户对应的认证属性上传到区块链100。区块链100可以与第一账户关联地存储认证属性。
这里,认证属性可以是认证设备为第一用户颁发的属性。以认证机构为大学、颁发的属性为学位属性为例,认证属性可以如下:info={accountID,“XXX大学2022年硕士学位”}。认证设备204可以将第一账户对应的认证属性上传到区块链100,例如,明文上传。
在一些实施方式中,认证设备204可以使用自身账户的私钥companySK对该认证属性进行签名,并使用管理设备对应的区块链账户的公钥systemPK对认证属性进行加密。具体的,
infoHash=HASH(info),
infoSign=ECIES_Sign(companySK,infoHash),
infoCipher=ECIES_ENCRYPT(systemPK,info)。
其中,infoCipher可以表示加密认证属性。infoSign可以表示数字签名。
之后,认证设备204可以调用合约接口PublishCert,将包括第一用户的区块链账户accountID和加密认证属性infoCipher的认证属性信息上传到区块链上。举例来说,认证设备204可以向区块链100发送调用合约C1的第二交易,该第二交易中包括第一账户和加密认证属性。通过执行第二交易,区块链100可以在合约C1的合约状态的账户证书列表AccountCertsList中与第一账户关联地存储第一用户的加密认证属性,具体的,
PublishCert(accountID,infoCipher,infoSign)。
通过本实现方式中,区块链中可以与第一用户对应的第一账户关联地存储第一用户的属性列表和认证属性。认证属性和属性列表中的身份属性都属于第一用户的属性,共同组成第一用户的数字身份。还可以实现认证设备为第一用户颁发认证属性。通过不断增添第一用户的认证属性,第一用户对应的属性会逐渐丰富起来,第一用户对应的基础属性,以及学习、社会实践、技能认证等认证属性可以形成第一用户的一个完整的数字身份。
S313,管理设备203从区块链100获取第一账户的认证属性。
S314,管理设备203基于属性列表和认证属性生成新属性列表,基于新属性列表、主公钥和主私钥生成第一用户对应的第二子私钥。
在本实施例中,管理设备203可以从区块链获取第一账户的认证属性,如果认证属性为加密认证属性,可以对加密认证属性进行解密后得到针对第一用户的认证属性。
举例来说,管理设备可以从账户证书列表AccountCertsList中获取认证属性信息(accountID,infoCipher,infoSign)之后,可以先验证属性信息的有效性,具体的,
解密获取认证属性,info=ECIES_DECRYPT(systemSK,infoCipher),
infoHash=HASH(info)。
验证认证设备的数字签名infoSign的有效性,具体的,
result=ECIES_Verify(companyPK,infoSign,infoHash)。
作为示例,数字签名验证通过之后,管理设备可以链下校验认证属性info={accountID,“XXX大学2022年硕士学位”}的合理性和合法性,例如,校验认证机构的资质是否足够,颁发时间是否合理等等。校验通过后,管理设备可以基于属性列表和认证属性信生成第一用户的新属性列表,该新属性列表中可以包括第一用户的身份属性和认证属性。举例来说,管理设备可以将第一用户的认证属性添加到第一用户原来的属性列表中,得到新属性列表。
之后,管理设备可以基于新属性列表、主公钥和主私钥生成第一用户对应的第二子私钥。
以认证机构为大学,颁发的属性为学位属性,认证属性为info={accountID,“XXX大学2022年硕士学位”}为例,管理设备可以在属性列表包括的身份属性的基础上,为第一用户新增属性标签“XXX大学2022年硕士学位”,从而得到针对第一用户的新属性列表AttriListNew,包括身份属性和认证属性。基于此,管理设备可以生成第一用户对应的第二子私钥skNew。举例来说,可以调用CP-ABE的KeyGen函数生成第二子私钥,具体的,
skNew=CPABE_KeyGen(AttriListNew,msk,mpk)。
之后,管理设备203可以使用第一用户的公钥accountPK加密属性标签AttriListNew和第二子私钥skNew,例如,可以使用ECIES算法或者RSA算法进行加密,以ECIES算法为例,具体的,
accountCipherNew=ECIES_ENCRYPT(accountPK,AttriListNew,skNew)。
并在链上合约的合约状态的列表accountInfoList中存储数据{accountID,accountPK,accountCipherNew}。其中,accountID为第一用户的链上账户ID。
可选的,管理设备还用于将新属性列表上传至区块链,区块链用于关联地存储新属性列表和第二用户子私钥。
例如,区块链在关联地存储新属性列表和第二子私钥时具体用于:与第一账户关联地存储通过对第一账户的第二子私钥和新属性列表进行加密得到的第一密文,其中,第一密文是管理设备使用第一账户的公钥加密生成的。
S315,管理设备203将第二子私钥和新属性列表上传至区块链。区块链100可以与第一账户关联地存储新属性列表和第二子私钥。之后,第一用户设备可以从区块链获取新属性列表和第二子私钥。
在本实施例中,区块链100可以与第一账户关联地存储属性列表和基于属性列表生成的子私钥。其中,子私钥可以用于对属性加密的信息的进行解密。
由此,基于图3所示的流程,可以在区块链100中创建第一用户的数字身份。基于相同的方式还可以创建其他用户的数字身份。有了多个用户的数字身份之后,还可以继续完善用户之间的社交关系。作为示例,用户之间的社交关系也可以是以属性的形式表示。例如,针对每个数字身份可以设置一个社交属性列表,该列表中可以包含与该数字身份有社交关系的账户。其中,社交关系可以包括加好友、加关注等等。以加关注为例,比如,用户A对应的账户A关注了账户B、账户C和账户D,那么账户A就会拥有账户B、账户C和账户D的账户ID作为社交属性。基于账户的社交属性,不同的账户之间可以进行社交。
请继续参见图4,图4示出了本说明书实施例的基于区块链进行社交的系统中第一用户设备301、第二用户设备302、管理设备203和区块链100之间进行社交的一个示例的时序图。
S401,第一账户对应的第一用户设备301从区块链100获取管理设备203上传的主公钥。
S402,第一用户设备301基于主公钥、社交信息和加密策略进行属性加密得到加密社交信息。
S403,第一用户设备301将加密社交信息上传到区块链100。
实践中,第一用户可以根据实际场景和需要设置加密策略,加密策略可以用于规定设备满足那些属性标签的条件下才能解密加密社交信息。针对不同的社交信息,可以设置对应的加密策略。作为示例,加密策略的结构可以是树状结构。继续参考图5,图5示出了一个加密策略的示意图,该加密策略为policy=(1of 3){AaccountID、CaccountID、DaccountID},则基于该加密策略得到的加密社交信息,需要具有账户A、账户C和账户D三种属性之一的账户才能解密成功,即,只有账户A、账户C和账户D可以解密成功,否则解密失败。可以理解,图5所示的加密策略仅仅用于解释树状结构,而非对加密策略的内容做限定,实践中,不同的社交信息可以对应不同的加密策略。
作为一个示例,在一些场景中,第一用户对应的第一账户可以选择向有限个账户发送社交信息。其中,社交信息content可以是文字、图片、视频等形式。这些场景下,需要对社交信息进行属性加密,对社交信息content进行加密的加密策略policy可以包括目标账户,当有多个目标账户时可以设置为目标账户的账户ID列表,在该列表中的账户可以解密查看社交信息content。此时,加密策略可以用于规定目标账户具有解密加密社交信息的能力。以加密策略policy为policy=(1of 3){AaccountID、CaccountID、DaccountID}为例,目标账户包括AaccountID、CaccountID、DaccountID,则只有账户A、账户C和账户D能解密查看。本例中,社交信息content可以通过以下方式进行属性加密得到加密社交信息contentCipher:
contentCipher=CPABE_ENCRYPT(content,policy,mpk)。
作为另一个示例,在一些场景中,第一用户对应的第一账户可以选择向与第一账户存在目标关系类型的账户发送社交信息。此时,加密策略可以包括目标关系类型,加密策略可以用于规定与第一账户存储在目标关系类型的账户具有解密加密社交信息的能力。比如,以目标关系类型为加关注为例,第一账户可以选择向关注了第一账户的账户发送社交信息。当某个账户关注了第一账户之后,该账户对应的社交属性列表中就会拥有一条社交属性,该社交属性可以包括第一账户和关系类型“加关注”,例如,{第一账户-加关注}。本例中,加密策略policy可以为policy=(1of 1){第一账户-加关注},该加密策略规定,只有关注了第一账户的账户可以解密得到社交信息。
作为再一个示例,在一些场景中,第一账户可以不对社交信息进行加密,直接将社交信息明文传输。
在需要进行属性加密的场景中,第一用户设备可以基于主公钥、社交信息和加密策略进行属性加密得到加密社交信息,并将加密社交信息上传至区块链。加密社交信息只有符合加密策略的账户才可以解密看到,从而保护了社交信息。
S404,第二用户设备302向区块链100上传关系创建信息。
在本实施例中,如果第二用户对应的第二账户与第一用户对应的第一账户创建了社交关系,例如,第二账户关注了第一账户,又例如,第二账户添加了第一账户为好友,等等。则第二账户对应的第二用户设备可以向区块链上传关系创建信息,该关系创建信息可以包括第一账户、关系类型等等。可以理解,在仅存在一种社交关系类型的场景中,所有存在社交关系的账户之间的关系类型都相同,此时,可以忽略关系类型,关系创建信息中可以不包括关系类型。
实践中,为了保护关系创建信息,第二账户可以使用管理设备203的系统公钥systemPK对关系创建信息进行加密后再上传区块链。举例来说,假设第一账户为10AccountId,第二账户为20AccountId,关系创建信息包括10AccountId,则第二账户可以通过以下方式进行加密:
accountIdCipher=ECIES_ENCRYPT(systemPK,10AccountId)。
第二用户设备302可以通过调用合约接口FollowAccount(accountIdCipher)向区块链上传加密关系创建信息accountIdCipher。
在一些可选的实现方式中,上述基于区块链进行社交的系统还可以包括目标社交应用的服务器。以及第二用户设备302向区块链上传关系创建信息时,具体如下进行:第二用户设备可以通过目标社交应用向服务器发送关系创建信息。服务器将关系创建信息上传到区块链。
实践中,用户在使用目标社交应用时,如果想与目标社交应用中的某个账户建立社交关系,例如,加好友、加关注等等,则可以通过目标社交应用向服务器发送关系创建信息。社交关系创建之后,服务器可以将关系创建信息上传至区块链。
可选的,用户设备需要向服务器证明区块链账户accountID是自己的链上账户ID。以用户设备为第一用户设备为例,第一用户设备可以通过以下方式向服务器证明区块链账户accountID是自己的链上账户ID:首先,第一用户设备可以从区块链获取第一子私钥和属性列表;之后,基于预设的签名策略和第一子私钥进行属性签名得到签名;然后,将签名和签名策略发送给服务器,其中,签名策略可以包括第一用户的身份属性和第一账户,签名用于向认证设备证明第一用户的身份属性和第一账户是关联地。举例来说,可以使用基于属性的签名(attribute-based signature,ABS)进行属性签名。ABS是一种公钥签名验证算法,用户的密钥和签名结构取决于属性。只有当用户密钥的属性集(包括多个属性标签)与签名策略相匹配时,才能签名并验证成功。可以理解,用户设备向服务器证明区块链账户accountID是自己的链上账户ID的过程,与前述用户设备向认证机构证明区块链账户accountID是自己的链上账户ID的过程相类似,此处不再赘述。
S405,管理设备203从区块链100获取关系创建信息。
如果管理设备203获取的关系创建信息为加密关系创建信息accountIdCipher,则管理设备203可以进行解密,具体的,
10AccountId=ECIES_DECRYPT(systemSK,accountIdCipher)。
S406,管理设备203基于关系创建信息生成第二用户设备对应的第二账户的社交属性,将社交属性存储到针对第二账户预设的社交属性列表中,并基于社交属性列表、主公钥和主私钥生成第二账户对应的社交子私钥。
S407,管理设备203将社交子私钥上传至区块链。
在本实施例中,管理设备根据获取的关系创建信息可以生成第二账户的社交属性,该社交属性可以用于指示第一账户和第二账户存在社交关系,该社交属性可以包括第一账户。实践中,可以根据实际需要设定社交属性,例如,在仅存在一种社交关系类型的场景中,社交属性可以为“10AccountId-S”,其中,10AccountId表示第一账户,后缀S可以表示社交属性。又例如,在存在多种社交关系类型的场景中,社交属性可以为“10AccountId-S01”、“10AccountId-S02”、……等等,其中,10AccountId表示第一账户,后缀S01、S02可以表示关系类型。
针对第二账户管理设备内部可以预先设置有一个社交属性列表SocialAttriList,该社交属性列表SocialAttriList可以用于存储针对第二账户生成的社交属性。管理设备可以将生成的、用于指示第一账户和第二账户存在社交关系的社交属性存储到该社交属性列表SocialAttriList。社交属性列表SocialAttriList中可以包含第二账户自身的账户ID和多个社交属性。例如,假设第二账户20AccountId与第一账户10AccountId、第三账户30AccountId、第四账户40AccountId存在社交关系,则针对第二账户的社交属性列表SocialAttriList可以如下所示:
{"20AccountId","10AccountId-S","30AccountId-S","40AccountId-S"}。
之后,管理设备203可以基于社交属性列表、主公钥和主私钥生成第二账户对应的社交子私钥Socialsk。举例来说,管理设备203可以通过CP-ABE的KeyGen函数生成生成第二账户对应的社交子私钥Socialsk,具体的,
Socialsk=CPABE_KeyGen(SocialAttriList,msk,mpk)。
在一些实现方式中,管理设备203可以将社交属性列表SocialAttriList上传至区块链,例如,明文上传,区块链可以与第二账户关联地存储社交属性列表SocialAttriList和社交子私钥Socialsk。
在另一些实现方式中,管理设备203还可以使用第二账户对应的公钥accountPK对社交属性列表SocialAttriList和社交子私钥Socialsk进行加密,得到账户社交信息密文accountSocailCipher,这里,比如使用ECIES或者RSA进行公钥加密。以ECIES为例,具体的,accountSocailCipher=ECIES_ENCRYPT(accountPK,SocialAttriList,Socialsk)。
可以将账户社交信息密文accountSocailCipher存储在合约的合约状态中预先设定的accountSocialList列表中,该列表中的各条信息包括{accountID,accountSocailCipher}。也就是说,在区块链中与第二账户关联地存储通过对社交属性列表和社交子私钥进行加密得到的密文accountSocailCipher。
在一些可选的实现方式中,针对第二账户预设的社交属性列表中存储的社交属性可以是基于第二账户在多个社交应用的操作生成的。
由上述可知,区块链的合约中可以存储用户的数字身份。不同社交应用可以接入区块链的合约,这样,用户对应的区块链的账户可以登录多个社交应用。在各个社交应用中,账户都可以通过执行加关注、加好友等操作与其它账户建立社交关系,基于该社交关系可以建立账户的社交属性,该社交属性可以存储到账户对应的社交属性列表。通过将在多个社交应用中生成的社交属性统一存储到社交属性列表,可以使账户在一个社交应用中建立的社交关系,能够同步到其它接入区块链的社交应用中。基于此,当有一个新社交应用出现时,该新社交应用可以从区块链获取各个用户对应的数字身份,以及各个用户对应的账户之间的社交关系,由此,用户可以携带自己的数字身份和社交关系进入不同的社交应用,而无需再经历漫长的注册、添加等过程。
S408,第二用户设备302从区块链100获取社交子私钥和加密社交信息。
具体的,第二用户设备302可以向区块链100发送交易,交易可以调用合约C1,以从区块链100获取社交子私钥和加密社交信息。区块链的节点可以执行交易,将社交子私钥和加密社交信息发送到第二用户设备302。
举例来说,第二用户设备可以根据accountID从合约状态的accountSocialList列表中获取管理设备为其分配的社交属性列表SocialAttriList和社交子私钥Socialsk,具体的,
SocialAttriList,Socialsk=ECIES_DECRYPT(accountSK,accountSocailCipher)。
之后,第二用户设备可以使用社交子私钥Socialsk对区块链中存储的加密社交信息进行解密。
S409,第二用户设备302使用社交子私钥Socialsk对加密社交信息进行解密,在社交属性列表SocialAttriList符合加密策略的情况中,解密成功,得到社交信息。
在本实施例中,第二用户设备302可以从区块链100获取社交子私钥和加密社交信息,并尝试使用社交子私钥对加密社交信息进行解密,在第二账户对应的社交属性列表符合加密策略的情况中,解密成功,得到社交信息。举例来说,第二用户设备302可以通过调用CP-ABE的Decrypt函数来尝试对加密社交信息进行解密,具体的,
社交信息=CPABE_DECRYPT(加密社交信息,Socialsk)。
通过DECRYPT函数,只有第二账户对应的社交属性列表符合加密社交信息的加密策略时,才能解密成功,得到社交信息。
回顾以上过程,在本说明书的上述实施例中,基于区块链进行社交的系统包括第一用户设备、第二用户设备、管理设备和区块链,其中,管理设备包括用于基于属性加密算法生成的主公钥和主私钥,区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于主公钥和加密策略进行属性加密而获得,其中,加密策略可以用于规定拥有那些属性的账户可以解密。第二用户设备可以向区块链上传用于和第一账户建立社交关系的关系创建信息,其中,关系创建信息可以包括第一账户。管理设备可以从区块链获取第二用户上传的该关系创建信息,基于该关系创建信息生成第二用户设备对应的第二账户的社交属性,该社交属性可以包括第一账户,社交属性可以用于指示第一账户和第二账户存在社交关系。之后,管理设备可以将该社交属性存储到针对第二账户预设的社交属性列表中。管理设备还可以基于社交属性列表、主公钥和主私钥生成第二账户的社交子私钥,并将社交子私钥上传至区块链。第二用户设备可以从区块链获取社交子私钥和加密社交信息,并使用社交子私钥对加密社交信息进行解密,在社交属性列表符合加密策略的情况中,解密成功,得到社交信息。本系统中,只有社交属性列表与加密社交信息对应的加密策略相符合的设备才能对加密社交信息解密成功,得到社交信息,从而实现了对社交信息的保护。同时,发布社交信息的账户可以通过设置加密策略来规定拥有那些社交属性的账户可以解密获取社交信息,从而实现了对所发布社交信息传播和接收的控制。
本说明书示出了一个实施例的基于区块链进行社交的方法,该方法可以应用于区块链的节点。其中,区块链的节点可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。其中,区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于管理设备的主公钥和加密策略进行属性加密而获得。具体的,第一用户设备可以基于主公钥、社交信息和加密策略进行属性加密得到加密社交信息,并将加密社交信息上传至区块链。
基于此,该基于区块链进行社交的方法,可以包括以下步骤:
步骤一,接收关系创建信息,其中,关系创建信息包括第一账户。
在本实施例中,如果第二用户对应的第二账户与第一用户对应的第一账户创建了社交关系,例如,第二账户关注了第一账户,又例如,第二账户添加了第一账户为好友,等等。则第二账户对应的第二用户设备可以向区块链上传关系创建信息,该关系创建信息可以包括第一账户、关系类型等等。可以理解,在仅存在一种社交关系类型的场景中,所有存在社交关系的账户之间的关系类型都相同,此时,可以忽略关系类型,关系创建信息中可以不包括关系类型。
步骤二,将关系创建信息发送给管理设备。
在本实施例中,区块链的节点可以将关系创建信息发送给管理设备。管理设备接收到关系创建信息之后,可以执着以下操作:1)基于关系创建信息生成第二账户的社交属性;2)将社交属性存储到针对第二账户预设的社交属性列表中;3)基于社交属性列表、主公钥和主私钥生成第二账户的社交子私钥,其中,社交属性列表中存储的社交属性是基于第二账户在多个社交应用的操作生成的。
步骤三,接收管理设备发送的社交子私钥。
步骤四,将社交子私钥和加密社交信息发送给第二用户设备,以便第二用户设备使用社交子私钥对加密社交信息进行解密,在社交属性列表符合加密策略的情况中,解密成功,得到社交信息。
在一些可选的实现方式中,上述接收关系创建信息还可以具体如下进行:接收目标社交应用的服务器发送的关系创建信息,其中,关系创建信息是第二账户对应的第二用户设备通过目标社交应用发送给服务器的。以及,上述将社交子私钥和加密社交信息发送给第二用户设备,可以具体如下进行:将社交子私钥和加密社交信息发送给服务器,以供服务器发送给第二用户设备。
在一些可选的实现方式中,上述基于区块链进行社交的方法,还可以包括以下内容:1),接收第一用户设备发送的第一用户的身份信息;2),将第一用户的身份信息发送过给管理设备,以便管理设备执行以下操作:在对第一用户的身份信息校验通过之后创建第一账户,生成第一用户的属性列表,属性列表包括第一账户和第一用户的身份属性;基于属性列表、主公钥和主私钥生成第一子私钥;3),接收管理设备发送的第一子私钥和属性列表,并与第一账户关联地存储属性列表和第一子私钥。
可选的,上述基于区块链进行社交的方法,还可以包括以下内容:a),将第一子私钥和属性列表发送给第一用户设备,以便第一用户设备基于签名策略和第一子私钥进行属性签名得到签名,并将签名和签名策略发送给认证设备,其中,签名策略包括第一用户的身份属性和第一账户,签名用于向认证设备证明第一用户的身份属性和第一账户是关联的。b),接收认证设备发送的第一账户对应的认证属性,其中,认证属性是认证设备基于预先获取的主公钥和签名策略对签名进行验证,并验证通过的情况中发送的。c),与第一账户关联地存储认证属性。
本说明书又示出了一个实施例的基于区块链进行社交的方法,该方法可以应用于目标社交应用的服务器,区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于管理设备的主公钥和加密策略进行属性加密而获得。该方法可以包括:
步骤1),接收第二账户对应的第二用户设备发送的关系创建信息,并将关系创建信息上传到区块链。其中,关系创建信息包括第一账户。
步骤2),从区块链获取加密社交信息和第二账户的社交子私钥,并将社交子私钥和加密社交信息发送给第二用户设备。第二用户设备可以使用社交子私钥对加密社交信息进行解密,在社交属性列表符合加密策略的情况中,解密成功,得到社交信息。
其中,社交子私钥可以是管理设备通过以下方式生成后上传到区块链的:基于关系创建信息生成第二账户的社交属性,将社交属性存储到针对第二账户预设的社交属性列表中,并基于社交属性列表、主公钥和主私钥生成第二账户的社交子私钥,其中,社交属性列表中存储的社交属性可以是基于第二账户在多个社交应用的操作生成的。
根据另一方面的实施例,提供了一种基于区块链进行社交的装置,设置于区块链的节点,其中,区块链节点可以部署在任何具有计算、处理能力的设备、平台或设备集群中。
图6示出了根据一个实施例的基于区块链进行社交的装置的示意性框图。上述区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于管理设备的主公钥和加密策略进行属性加密而获得,上述装置600包括:第一接收单元601,配置为接收关系创建信息,其中,上述关系创建信息包括第一账户;第一发送单元602,配置为将上述关系创建信息发送给上述管理设备,以便上述管理设备基于上述关系创建信息执行以下操作:基于上述关系创建信息生成上述第二账户的社交属性,将上述社交属性存储到针对上述第二账户预设的社交属性列表中,基于上述社交属性列表、上述主公钥和主私钥生成上述第二账户的社交子私钥;第二接收单元603,配置为接收上述管理设备发送的上述社交子私钥;第二发送单元604,配置为将上述社交子私钥和上述加密社交信息发送给上述第二用户设备,以便上述第二用户设备使用上述社交子私钥对上述加密社交信息进行解密,在上述社交属性列表符合上述加密策略的情况中,解密成功,得到社交信息。
在本实施例的一些可选的实现方式中,上述第一接收单元601进一步配置为:接收目标社交应用的服务器发送的关系创建信息,其中,上述关系创建信息是第二账户对应的第二用户设备通过上述目标社交应用发送给上述服务器的;以及,上述第二发送单元604进一步配置为将上述社交子私钥和上述加密社交信息发送给上述服务器,以供上述服务器发送给上述第二用户设备。
在本实施例的一些可选的实现方式中,上述装置600还包括:第三接收单元(图中未示出),配置为接收上述第一用户设备发送的第一用户的身份信息;第三发送单元,配置为将上述第一用户的身份信息发送过给上述管理设备,以便上述管理设备执行以下操作:在对上述第一用户的身份信息校验通过之后创建第一账户,生成上述第一用户的属性列表,上述属性列表包括上述第一账户和上述第一用户的身份属性;基于上述属性列表、上述主公钥和上述主私钥生成第一子私钥;第四接收单元,配置为接收上述管理设备发送的上述第一子私钥和上述属性列表,并与上述第一账户关联地存储上述属性列表和第一子私钥。
在本实施例的一些可选的实现方式中,上述装置600还包括:第四发送单元,配置为将上述第一子私钥和上述属性列表发送给上述第一用户设备,以便上述第一用户设备基于签名策略和上述第一子私钥进行属性签名得到签名,并将上述签名和上述签名策略发送给认证设备,其中,上述签名策略包括上述第一用户的身份属性和上述第一账户,上述签名用于向认证设备证明上述第一用户的身份属性和上述第一账户是关联的;第五接收单元,配置为接收上述认证设备发送的上述第一账户对应的认证属性,其中,上述认证属性是上述认证设备基于预先获取的主公钥和上述签名策略对上述签名进行验证,并验证通过的情况中发送的;存储单元,配置为与上述第一账户关联地存储上述认证属性。
根据另一方面的实施例,还提供了一种基于区块链进行社交的装置,设置于目标社交应用的服务器。
图7示出了根据另一个实施例的基于区块链进行社交的装置的示意性框图。其中,上述区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于管理设备的主公钥和加密策略进行属性加密而获得,上述装置700包括:信息接收单元701,配置为接收第二账户对应的第二用户设备发送的关系创建信息,并将上述关系创建信息上传到上述区块链,其中,上述关系创建信息包括第一账户;子私钥发送单元702,配置为从上述区块链获取上述加密社交信息和上述第二账户的社交子私钥,并将上述社交子私钥和上述加密社交信息发送给上述第二用户设备,以便第二用户设备使用上述社交子私钥对上述加密社交信息进行解密,在上述社交属性列表符合上述加密策略的情况中,解密成功,得到社交信息;其中,上述社交子私钥是上述管理设备通过以下方式生成后上传到上述区块链的:基于上述关系创建信息生成上述第二账户的社交属性,将上述社交属性存储到针对上述第二账户预设的社交属性列表中,并基于上述社交属性列表、上述主公钥和主私钥生成上述第二账户的社交子私钥。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当上述计算机程序在计算机中执行时,令计算机执行基于区块链进行社交的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,其特征在于,上述存储器中存储有可执行代码,上述处理器执行上述可执行代码时,实现基于区块链进行社交的方法。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本申请不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。

Claims (21)

1.一种基于区块链进行社交的系统,其中,所述系统包括第一用户设备、第二用户设备、管理设备和区块链,所述管理设备包括基于属性加密算法生成的主公钥和主私钥,所述区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于主公钥和加密策略进行属性加密而获得,其中,所述加密策略包括指定属性标签,用于指示在拥有所述指定属性标签的条件下才能解密所述加密社交信息;
所述第二用户设备用于向所述区块链上传关系创建信息,其中,所述关系创建信息包括第一账户;
所述管理设备用于从所述区块链获取所述关系创建信息,基于所述关系创建信息生成所述第二用户设备对应的第二账户的社交属性,将所述社交属性存储到针对所述第二账户预设的社交属性列表中,并基于所述社交属性列表、所述主公钥和主私钥生成所述第二账户的社交子私钥,将所述社交子私钥上传至区块链,其中,所述社交属性包括所述第一账户,用于指示所述第一账户和第二账户存在社交关系;
所述第二用户设备用于从所述区块链获取所述社交子私钥和所述加密社交信息,并使用所述社交子私钥对所述加密社交信息进行解密,在所述社交属性列表符合所述加密策略的情况中,解密成功,得到社交信息。
2.根据权利要求1所述的系统,其中,所述系统还包括目标社交应用的服务器,以及所述第二用户设备在向所述区块链上传关系创建信息时具体用于:所述第二用户设备用于通过所述目标社交应用向所述服务器发送关系创建信息;所述服务器用于将所述关系创建信息上传到所述区块链。
3.根据权利要求1所述的系统,其中,所述社交属性列表中存储的社交属性是基于所述第二账户在多个社交应用的操作生成的。
4.根据权利要求1所述的系统,其中,所述社交属性列表包括所述第二账户,以及所述加密策略包括目标账户,用于规定所述目标账户具有解密所述加密社交信息的能力;或者,所述社交属性还包括关系类型,以及所述加密策略包括目标关系类型,用于规定与所述第一账户存在目标关系类型的账户具有解密所述加密社交信息的能力。
5.根据权利要求1所述的系统,其中,所述第二账户对应的社交属性列表包括第二账户,所述管理设备还用于将所述社交属性列表上传至区块链,所述区块链用于与所述第二账户关联地存储所述社交属性列表和所述社交子私钥。
6.根据权利要求5所述的系统,其中,所述区块链在关联地存储所述社交属性列表和所述社交子私钥时具体用于:与所述第二账户关联地存储通过对所述社交属性列表和所述社交子私钥进行加密得到的密文,其中,所述密文是所述管理设备使用所述第二账户的公钥加密生成的。
7.根据权利要求2所述的系统,其中,所述第一用户设备用于向所述区块链上传第一用户的身份信息;
所述管理设备还用于从所述区块链获取所述第一用户的身份信息,在对所述第一用户的身份信息校验通过之后创建第一账户,生成所述第一用户的属性列表,所述属性列表包括所述第一账户和所述第一用户的身份属性;基于所述属性列表、所述主公钥和所述主私钥生成第一子私钥,将所述第一子私钥和所述属性列表上传至所述区块链;
所述区块链用于与所述第一账户关联地存储所述属性列表和第一子私钥。
8.根据权利要求7所述的系统,其中,所述区块链中部署有合约,所述管理设备在将所述第一子私钥和所述属性列表上传至所述区块链时具体用于:向所述区块链发送调用所述合约的第一交易,所述第一交易中包括第一账户和对所述第一账户的所述第一子私钥和所述属性列表进行加密得到的加密子私钥,所述加密子私钥使用所述第一账户的公钥加密生成;
所述区块链在与所述第一账户关联地存储所述属性列表和所述第一子私钥时具体用于:根据所述第一交易在所述合约的合约状态中的账户信息列表中与所述第一账户关联地存储所述加密子私钥。
9.根据权利要求7所述的系统,其中,所述系统还包括认证设备;所述第一用户设备还用于从所述区块链获取所述第一子私钥和所述属性列表,基于第一签名策略和所述第一子私钥进行属性签名得到第一签名,将所述第一签名和所述第一签名策略发送给所述服务器,其中,所述第一签名策略包括所述第一用户的身份属性和所述第一账户,所述第一签名用于向所述认证设备证明所述第一用户的身份属性和所述第一账户是关联的。
10.根据权利要求7所述的系统,其中,所述系统还包括认证设备;以及
所述第一用户设备还用于从所述区块链获取所述第一子私钥和所述属性列表,基于第二签名策略和所述第一子私钥进行属性签名得到第二签名,将所述第二签名和所述第二签名策略发送给所述认证设备,其中,所述第二签名策略包括所述第一用户的身份属性和所述第一账户,所述第二签名用于向所述认证设备证明所述第一用户的身份属性和所述第一账户是关联的;
所述认证设备用于基于预先获取的主公钥和所述第二签名策略对所述第二签名进行验证,在验证通过的情况中,将所述第一账户对应的认证属性上传到所述区块链;
所述区块链还用于与所述第一账户关联地存储所述认证属性。
11.根据权利要求10所述的系统,所述认证设备在将所述第一账户对应的认证属性上传到所述区块链时具体用于:向所述区块链发送调用合约的第二交易,所述第二交易中包括所述第一账户和对所述认证属性进行加密得到的加密认证属性,所述加密认证属性使用管理设备对应账户的公钥加密生成;所述区块链用于根据所述第二交易在所述合约的合约状态中的账户证书列表中与所述第一账户关联地存储所述第一用户的加密认证属性。
12.根据权利要求10所述的系统,其中,所述管理设备用于从所述区块链获取所述第一账户的认证属性,基于所述属性列表和所述认证属性生成新属性列表,基于所述新属性列表、所述主公钥和主私钥生成第二子私钥,将所述第二子私钥和所述新属性列表上传至所述区块链;
所述区块链还用于与所述第一账户关联地存储所述新属性列表和第二子私钥。
13.一种基于区块链进行社交的方法,应用于区块链的节点,所述区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于管理设备的主公钥和加密策略进行属性加密而获得,其中,所述加密策略包括指定属性标签,用于指示在拥有所述指定属性标签的条件下才能解密所述加密社交信息,所述方法包括:
接收关系创建信息,其中,所述关系创建信息包括第一账户;
将所述关系创建信息发送给所述管理设备,以便所述管理设备基于所述关系创建信息执行以下操作:基于所述关系创建信息生成第二用户设备对应的第二账户的社交属性,将所述社交属性存储到针对所述第二账户预设的社交属性列表中,基于所述社交属性列表、所述主公钥和主私钥生成所述第二账户的社交子私钥;
接收所述管理设备发送的所述社交子私钥;
将所述社交子私钥和所述加密社交信息发送给所述第二用户设备,以便所述第二用户设备使用所述社交子私钥对所述加密社交信息进行解密,在所述社交属性列表符合所述加密策略的情况中,解密成功,得到社交信息。
14.权利要求13所述的方法,其中,所述接收关系创建信息,包括:
接收目标社交应用的服务器发送的关系创建信息,其中,所述关系创建信息是第二账户对应的第二用户设备通过所述目标社交应用发送给所述服务器的;以及
所述将所述社交子私钥和所述加密社交信息发送给所述第二用户设备,包括:
将所述社交子私钥和所述加密社交信息发送给所述服务器,以供所述服务器发送给所述第二用户设备。
15.根据权利要求13所述的方法,其中,所述方法还包括:
接收所述第一用户设备发送的第一用户的身份信息;
将所述第一用户的身份信息发送过给所述管理设备,以便所述管理设备执行以下操作:在对所述第一用户的身份信息校验通过之后创建第一账户,生成所述第一用户的属性列表,所述属性列表包括所述第一账户和所述第一用户的身份属性;基于所述属性列表、所述主公钥和所述主私钥生成第一子私钥;
接收所述管理设备发送的所述第一子私钥和所述属性列表,并与所述第一账户关联地存储所述属性列表和第一子私钥。
16.根据权利要求15所述的方法,其中,所述方法还包括:
将所述第一子私钥和所述属性列表发送给所述第一用户设备,以便所述第一用户设备基于签名策略和所述第一子私钥进行属性签名得到签名,并将所述签名和所述签名策略发送给认证设备,其中,所述签名策略包括所述第一用户的身份属性和所述第一账户,所述签名用于向认证设备证明所述第一用户的身份属性和所述第一账户是关联的;
接收所述认证设备发送的所述第一账户对应的认证属性,其中,所述认证属性是所述认证设备基于预先获取的主公钥和所述签名策略对所述签名进行验证,并验证通过的情况中发送的;
与所述第一账户关联地存储所述认证属性。
17.一种基于区块链进行社交的方法,应用于目标社交应用的服务器,所述区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于管理设备的主公钥和加密策略进行属性加密而获得,其中,所述加密策略包括指定属性标签,用于指示在拥有所述指定属性标签的条件下才能解密所述加密社交信息,所述方法包括:
接收第二账户对应的第二用户设备发送的关系创建信息,并将所述关系创建信息上传到所述区块链,其中,所述关系创建信息包括第一账户;
从所述区块链获取所述加密社交信息和所述第二账户的社交子私钥,并将所述社交子私钥和所述加密社交信息发送给所述第二用户设备,以便第二用户设备使用所述社交子私钥对所述加密社交信息进行解密,在社交属性列表符合所述加密策略的情况中,解密成功,得到社交信息;
其中,所述社交子私钥是所述管理设备通过以下方式生成后上传到所述区块链的:基于所述关系创建信息生成所述第二账户的社交属性,将所述社交属性存储到针对所述第二账户预设的社交属性列表中,并基于所述社交属性列表、所述主公钥和主私钥生成所述第二账户的社交子私钥。
18.一种基于区块链进行社交的装置,设置于区块链的节点,所述区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于管理设备的主公钥和加密策略进行属性加密而获得,其中,所述加密策略包括指定属性标签,用于指示在拥有所述指定属性标签的条件下才能解密所述加密社交信息,所述装置包括:
第一接收单元,配置为接收关系创建信息,其中,所述关系创建信息包括第一账户;
第一发送单元,配置为将所述关系创建信息发送给所述管理设备,以便所述管理设备基于所述关系创建信息执行以下操作:基于所述关系创建信息生成第二用户设备对应的第二账户的社交属性,将所述社交属性存储到针对所述第二账户预设的社交属性列表中,基于所述社交属性列表、所述主公钥和主私钥生成所述第二账户的社交子私钥;
第二接收单元,配置为接收所述管理设备发送的所述社交子私钥;
第二发送单元,配置为将所述社交子私钥和所述加密社交信息发送给所述第二用户设备,以便所述第二用户设备使用所述社交子私钥对所述加密社交信息进行解密,在所述社交属性列表符合所述加密策略的情况中,解密成功,得到社交信息。
19.一种基于区块链进行社交的装置,设置于目标社交应用的服务器,所述区块链中存储的加密社交信息是第一账户对应的第一用户设备通过基于管理设备的主公钥和加密策略进行属性加密而获得,其中,所述加密策略包括指定属性标签,用于指示在拥有所述指定属性标签的条件下才能解密所述加密社交信息,所述装置包括:
信息接收单元,配置为接收第二账户对应的第二用户设备发送的关系创建信息,并将所述关系创建信息上传到所述区块链,其中,所述关系创建信息包括第一账户;
子私钥发送单元,配置为从所述区块链获取所述加密社交信息和所述第二账户的社交子私钥,并将所述社交子私钥和所述加密社交信息发送给所述第二用户设备,以便第二用户设备使用所述社交子私钥对所述加密社交信息进行解密,在社交属性列表符合所述加密策略的情况中,解密成功,得到社交信息;
其中,所述社交子私钥是所述管理设备通过以下方式生成后上传到所述区块链的:基于所述关系创建信息生成所述第二账户的社交属性,将所述社交属性存储到针对所述第二账户预设的社交属性列表中,并基于所述社交属性列表、所述主公钥和主私钥生成所述第二账户的社交子私钥。
20.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求13-17中任一项所述的方法。
21.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求13-17中任一项所述的方法。
CN202210722710.XA 2022-06-24 2022-06-24 基于区块链进行社交的系统、方法、装置、存储介质和计算设备 Active CN115134136B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210722710.XA CN115134136B (zh) 2022-06-24 2022-06-24 基于区块链进行社交的系统、方法、装置、存储介质和计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210722710.XA CN115134136B (zh) 2022-06-24 2022-06-24 基于区块链进行社交的系统、方法、装置、存储介质和计算设备

Publications (2)

Publication Number Publication Date
CN115134136A CN115134136A (zh) 2022-09-30
CN115134136B true CN115134136B (zh) 2024-03-29

Family

ID=83380584

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210722710.XA Active CN115134136B (zh) 2022-06-24 2022-06-24 基于区块链进行社交的系统、方法、装置、存储介质和计算设备

Country Status (1)

Country Link
CN (1) CN115134136B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190133573A (ko) * 2018-05-23 2019-12-03 권형석 스마트 컨트랙트를 통한 블록체인 거래 시스템 및 그 방법
CN112149165A (zh) * 2020-09-24 2020-12-29 安徽师范大学 一种基于区块链的具有激励机制症状匹配社交系统及方法
CN113221184A (zh) * 2021-03-27 2021-08-06 重庆邮电大学 一种基于区块链网络的物联网系统及装置
CN114595397A (zh) * 2022-02-12 2022-06-07 北京工业大学 一种基于区块链的社交网络信息访问共享方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190133573A (ko) * 2018-05-23 2019-12-03 권형석 스마트 컨트랙트를 통한 블록체인 거래 시스템 및 그 방법
CN112149165A (zh) * 2020-09-24 2020-12-29 安徽师范大学 一种基于区块链的具有激励机制症状匹配社交系统及方法
CN113221184A (zh) * 2021-03-27 2021-08-06 重庆邮电大学 一种基于区块链网络的物联网系统及装置
CN114595397A (zh) * 2022-02-12 2022-06-07 北京工业大学 一种基于区块链的社交网络信息访问共享方法

Also Published As

Publication number Publication date
CN115134136A (zh) 2022-09-30

Similar Documents

Publication Publication Date Title
CN108600272B (zh) 一种区块链数据处理方法、装置、处理设备及系统
CN112215601B (zh) 基于区块链的业务处理方法、业务处理方法、装置及设备
CA3058013C (en) Managing sensitive data elements in a blockchain network
KR102153845B1 (ko) 퍼블릭 사이드체인을 사용하여 컨소시엄 블록체인에 저장된 데이터의 무결성 검증
CN110060162B (zh) 基于区块链的数据授权、查询方法和装置
CN108681853B (zh) 基于区块链的物流信息传输方法、系统和装置
TWI701933B (zh) 一種區塊鏈資料處理方法、裝置、處理設備及系統
De Oliveira et al. Towards a blockchain-based secure electronic medical record for healthcare applications
CN113255005B (zh) 一种基于区块链的数据资产流转方法、装置及设备
EP3859647A1 (en) Blockchain transaction generation method and device
TW201947909A (zh) 一種區塊鏈資料處理方法、裝置、處理設備及系統
CN111492634A (zh) 使用零知识协议的安全并且机密的保管交易系统、方法和设备
CN109729041B (zh) 一种加密内容的发布以及获取方法及装置
CN109067528A (zh) 密码运算、创建工作密钥的方法、密码服务平台及设备
WO2014114080A1 (zh) 数据加密保护方法及系统
CN113076527B (zh) 一种基于区块链的数字资产处理方法及装置
CN110716724A (zh) 基于fpga实现隐私区块链的方法及装置
CN114331437A (zh) 一种基于区块链的数字印章使用方法及装置
CN115118486B (zh) 物联网系统、基于区块链获取数据的方法和装置、存储介质以及计算设备
CN115134136B (zh) 基于区块链进行社交的系统、方法、装置、存储介质和计算设备
CN115277002A (zh) 一种数字身份管理方法、区块链节点和系统
US11824896B2 (en) Cross-service rulebook management in a dynamic and adversarial environment
CN113761496A (zh) 一种基于区块链的身份校验方法及装置和电子设备
CN115580412B (zh) 基于区块链管理数字遗产的系统、方法和装置
CN115037548B (zh) 基于区块链的数据安全多方计算的系统、方法、装置、介质及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant