一种基于区块链的匿名数据共享方法及系统与流程

    专利查询2022-08-02  140



    1.本发明涉及区块链和密码学技术领域,特别涉及一种基于区块链的匿名数据共享方法及系统。


    背景技术:

    2.区块链是一种不可篡改的分布式共享账本。在区块链中,数据保存在多方,利用共识算法实现多节点数据的一致性。在区块链中,数据只能追加不能删除或修改。新型区块链是可编程的,利用智能合约可以将业务规则编码到区块链中,规则(代码)像数据一样不能删除或修改,代码在调用时自动执行,不能跳过,执行的结果也写入区块链。由于数据保存在多方,链上数据不可篡改,所以利用区块链可实现多方之间的可信数据共享。
    3.基于区块链的数据共享使得数据更加可信的同时也导致了数据公开的问题,而将数据通过对称加密后上链的做法虽然解决了数据公开的问题,但也难以实现灵活的数据共享策略。此外,在数据共享中,由于区块链在验证交易时需要验证用户的签名,使得通过公钥追踪到用户共享内容的变得容易,难以实现数据共享者的匿名。
    4.基于上述情况,本发明提出了一种基于区块链的匿名数据共享方法及系统。


    技术实现要素:

    5.本发明为了弥补现有技术的缺陷,提供了一种简单高效的基于区块链的匿名数据共享方法及系统。
    6.本发明是通过如下技术方案实现的:
    7.一种基于区块链的匿名数据共享方法,其特征在于:包括以下步骤:
    8.(1)管理机构生成密钥,安全分发私钥并将生成的公钥记录在区块链系统上;
    9.(2)数据提供者利用加密公钥对数据进行加密,并将加密的数据进行上链操作;
    10.(3)数据接收者从共享数据上链事件获取加密数据后,通过区块链系统获取属性基加密的公钥,调用属性基加密的解密算法进行解密。
    11.所述步骤(1)中,密钥生成与分发步骤如下:
    12.(i)管理机构为每位用户生成环签名的私钥和公钥;
    13.(ii)管理机构生成属性基加密的主私钥与公钥,为每位用户生成私钥;
    14.(iii)管理机构将环签名和属性基加密的公钥记录在区块链系统上。
    15.所述步骤(2)中,数据加密与上链步骤如下:
    16.(i)数据提供者设定访问策略,并从区块链获取属性基加密公钥、环签名公钥,对共享的数据进行加密获得密文;
    17.(ii)数据提供者将密文打包成交易,对交易进行环签名,将交易和环签名发生到区块链;
    18.(iii)区块链收到交易和环签名后,判断交易和环签名是否合法,若合法,执行下一步;否则,丢弃交易和环签名;
    19.(iv)区块链从交易中提取出密文、记录在区块链上,并触发共享数据上链事件。
    20.所述步骤(1)中,设有n个用户,用户useri的属性值集合为si,其中1≦i≦n;
    21.管理机构调用环签名的keygen算法,为用户useri生成环签名的私钥sk
    ri
    和公钥pk
    ri
    ,将私钥sk
    ri
    安全分发给用户useri;
    22.管理机构先调用属性基加密的setup算法,生成公钥pk
    abe
    和主私钥msk;再根据用户useri的属性si,调用keygen(pk
    abe
    ,msk,si)算法,为用户useri生成解密私钥sk
    abei
    ,并安全分发给用户useri;
    23.管理机构将环公钥集合l=(pk
    r1
    ,pk
    r2
    ,...,pk
    rn
    )和pk
    abe
    写入区块链系统进行公开。
    24.所述步骤(2)中,用户useri设定共享数据m的属性访问策略a,通过区块链系统获取公钥pk
    abe
    和环公钥集合l,调用enc(pk
    abe
    ,a,m)算法生成密文c;
    25.用户useri将密文c构造成交易消息t,调用环签名的sign(sk
    ri
    ,l,t)算法生成环签名r,将交易消息t和环签名r发送给区块链系统;
    26.区块链系统收到交易消息t和环签名r,并检测到是环签名后调用环签名的ver(t, r)算法,验证环签名r是否是交易消息t的环签名,若是,则进行下一步;否则,抛弃收到的交易消息t和环签名r;
    27.区块链系统从交易消息t中提取出密文c,将密文c记录到区块链上,并触发共享数据上链事件。
    28.所述步骤(3)中,用户userj监听到共享数据上链事件发生后,其中,1≦j≦n且j≠i,从事件中获取密文c,通过区块链系统获取公钥pk
    abe
    ,并调用属性基加密的解密算法 dec(pk
    abe
    ,sk
    abej
    ,c);
    29.若userj的属性集合sj满足步骤(2)中设定的访问策略a,则解密出明文m,获得用户useri共享的数据;否则,解密失败。
    30.该基于区块链的匿名数据共享方法的系统,包括管理机构,公有链,数据提供方和数据接收方;
    31.所述管理机构负责每位用户生成环签名的私钥和公钥,生成属性基加密的主私钥、公钥,为每位用户生成私钥,并将环签名和属性基加密的公钥记录在区块链系统上;
    32.所述数据提供方负责设定访问策略,从区块链获取属性基加密公钥、环签名公钥,对共享的数据进行加密获得密文,将密文打包成交易,对交易进行环签名,将交易和环签名发生给区块链;
    33.所述数据接收方负责从共享数据上链事件获取密文,通过区块链系统获取属性基加密的公钥,调用属性基加密的解密算法进行解密;
    34.所述公有链即区块链,负责提取并保存管理机构和数据提供方上链的数据,触发数据共享上链事件,并在收到交易和环签名后,判断交易和环签名是否合法,若合法则保存,否则丢弃交易和环签名。
    35.所述管理机构调用环签名的keygen算法,为各个用户生成环签名的私钥和公钥,将私钥安全分发给对应的用户;
    36.所述管理机构先调用属性基加密的setup算法生成公钥和主私钥,再根据各个用户的属性调用keygen算法,为各个用户生成解密私钥,并安全分发给对应的用户;
    37.所述数据提供方调用enc算法将共享数据生成密文,调用环签名的sig算法生成环签名;
    38.所述数据接收方调用属性基加密的解密算法dec进行解密;
    39.所述公有链调用环签名的ver算法判断交易和环签名是否合法。
    40.本发明的有益效果是:该基于区块链的匿名数据共享方法及系统,不仅保证了数据的安全性,同时具有良好的匿名性和不可链接性,实现了匿名共享,具有较强的隐私性。
    附图说明
    41.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
    42.附图1为本发明基于区块链的匿名数据共享方法示意图。
    具体实施方式
    43.为了使本技术领域的人员更好的理解本发明中的技术方案,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚,完整的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
    44.环签名是签名中的一种,在环签名中,群体中的任意一个成员能够以匿名的方式对消息进行签名。环签名是可以公开验证的,而且可以只用环公钥来验证,且验证者无法区分是群体中的哪个成员生成的该签名。环签名主要包含如下算法:
    45.(1)密钥生成算法keygen:输出每个参与环签名成员的私钥sk
    ri
    和公钥pk
    ri

    46.(2)签名算法sign(sk
    ri
    ,l=(pk
    r1
    ,pk
    r2
    ,...,pk
    rn
    ),m):输入用户自己的私钥sk
    ri
    、输入群公钥l、消息m,输出签名r;
    47.(3)验证算法ver(m,r):输入消息m和签名r,输出r是否为m的环签名。
    48.属性基加密将用户的一系列属性秘密嵌入到用户私钥中,制定与某属性集合相匹配的访问策略实现一对多的数据共享,实现密文的细粒度访问控制功能,只有满足访问策略结构的用户才可以正确解密密文得到明文信息。属性基加密主要包含如下算法:
    49.(1)密钥初始化算法setup:输出公钥pk
    abe
    和主私钥msk;
    50.(2)密钥生成算法keygen(pk
    abe
    ,msk,si):输入系统公钥pk
    abe
    、主私钥msk和用户的属性集合si,输出用户的解密私钥sk
    abei

    51.(3)加密算法enc(pk
    abe
    ,a,m):输入公钥pk
    abe
    ,访问策略a,明文m,输出密文c;
    52.(4)解密算法dec(pk
    abe
    ,sk
    abei
    ,c):输入公钥pk
    abe
    、用户的解密私钥sk
    abei
    和密文 c,若用户属性满足访问策略,则输出明文m;否则,输出为空。
    53.该基于区块链的匿名数据共享方法,包括以下步骤:
    54.(1)管理机构生成密钥,安全分发私钥并将生成的公钥记录在区块链系统上;
    55.(2)数据提供者利用加密公钥对数据进行加密,并将加密的数据进行上链操作;
    56.(3)数据接收者从共享数据上链事件获取加密数据后,通过区块链系统获取属性
    基加密的公钥,调用属性基加密的解密算法进行解密。
    57.所述步骤(1)中,密钥生成与分发步骤如下:
    58.(i)管理机构为每位用户生成环签名的私钥和公钥;
    59.(ii)管理机构生成属性基加密的主私钥与公钥,为每位用户生成私钥;
    60.(iii)管理机构将环签名和属性基加密的公钥记录在区块链系统上。
    61.所述步骤(2)中,数据加密与上链步骤如下:
    62.(i)数据提供者设定访问策略,并从区块链获取属性基加密公钥、环签名公钥,对共享的数据进行加密获得密文;
    63.(ii)数据提供者将密文打包成交易,对交易进行环签名,将交易和环签名发生到区块链;
    64.(iii)区块链收到交易和环签名后,判断交易和环签名是否合法,若合法,执行下一步;否则,丢弃交易和环签名;
    65.(iv)区块链从交易中提取出密文、记录在区块链上,并触发共享数据上链事件。
    66.所述步骤(1)中,设有n个用户,用户useri的属性值集合为si,其中1≦i≧n;
    67.管理机构调用环签名的keygen算法,为用户useri生成环签名的私钥sk
    ri
    和公钥pk
    ri
    ,将私钥sk
    ri
    安全分发给用户useri;
    68.管理机构先调用属性基加密的setup算法,生成公钥pk
    abe
    和主私钥msk;再根据用户useri的属性si,调用keygen(pk
    abe
    ,msk,si)算法,为用户useri生成解密私钥sk
    abei
    ,并安全分发给用户useri;
    69.管理机构将环公钥集合l=(pk
    r1
    ,pk
    r2
    ,...,pk
    rn
    )和pk
    abe
    写入区块链系统进行公开。
    70.所述步骤(2)中,用户useri设定共享数据m的属性访问策略a,通过区块链系统获取公钥pk
    abe
    和环公钥集合l,调用enc(pk
    abe
    ,a,m)算法生成密文c;
    71.用户useri将密文c构造成交易消息t,调用环签名的sign(sk
    ri
    ,l,t)算法生成环签名r,将交易消息t和环签名r发送给区块链系统;
    72.区块链系统收到交易消息t和环签名r,并检测到是环签名后调用环签名的ver(t, r)算法,验证环签名r是否是交易消息t的环签名,若是,则进行下一步;否则,抛弃收到的交易消息t和环签名r;
    73.区块链系统从交易消息t中提取出密文c,将密文c记录到区块链上,并触发共享数据上链事件。
    74.所述步骤(3)中,用户userj监听到共享数据上链事件发生后,其中,1≦j≧n且j≠i,从事件中获取密文c,通过区块链系统获取公钥pk
    abe
    ,并调用属性基加密的解密算法 dec(pk
    abe
    ,sk
    abej
    ,c);
    75.若userj的属性集合sj满足步骤(2)中设定的访问策略a,则解密出明文m,获得用户useri共享的数据;否则,解密失败,说明userj的属性集合sj不满足访问策略a。
    76.该基于区块链的匿名数据共享方法的系统,包括管理机构,公有链,数据提供方和数据接收方;
    77.所述管理机构负责每位用户生成环签名的私钥和公钥,生成属性基加密的主私钥、公钥,为每位用户生成私钥,并将环签名和属性基加密的公钥记录在区块链系统上;
    78.所述数据提供方负责设定访问策略,从区块链获取属性基加密公钥、环签名公钥,对共享的数据进行加密获得密文,将密文打包成交易,对交易进行环签名,将交易和环签名发生给区块链;
    79.所述数据接收方负责从共享数据上链事件获取密文,通过区块链系统获取属性基加密的公钥,调用属性基加密的解密算法进行解密;
    80.所述公有链即区块链,负责提取并保存管理机构和数据提供方上链的数据,触发数据共享上链事件,并在收到交易和环签名后,判断交易和环签名是否合法,若合法则保存,否则丢弃交易和环签名。
    81.所述管理机构调用环签名的keygen算法,为各个用户生成环签名的私钥和公钥,将私钥安全分发给对应的用户;
    82.所述管理机构先调用属性基加密的setup算法生成公钥和主私钥,再根据各个用户的属性调用keygen算法,为各个用户生成解密私钥,并安全分发给对应的用户;
    83.所述数据提供方调用enc算法将共享数据生成密文,调用环签名的sig算法生成环签名;
    84.所述数据接收方调用属性基加密的解密算法dec进行解密;
    85.所述公有链调用环签名的ver算法判断交易和环签名是否合法。
    86.有效防止数据篡改,实现了匿名共享,具有较强的隐私性。
    87.与现有技术相比,该基于区块链的匿名数据共享方法及系统,具有以下特点:
    88.第一、安全可靠
    89.环签名和属性基加密的公钥由权威机构写入区块链系统,用户每次使用上述公钥时均从区块链系统获得,恶意替换上述公钥难以实现;同时,每次数据共享的密文也写入了区块链系统,可以有效防止数据篡改。
    90.第二、实现了匿名共享,具有较强的隐私性
    91.交易的签名验证通过环签名实现,由于环签名具有良好的匿名性和不可链接性,所以通过区块链系统也难以确认数据提供者的身份;同时,采用属性基加密进行数据的共享,意味着只有符合属性策略的用户采可以解密出共享数据(例如设定大于18岁的属性策略,就只有年龄大于18岁的用户可以正常解密),因此很难确认数据接收者的身份。
    92.以上所述的实施例,只是本发明具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

    技术特征:
    1.一种基于区块链的匿名数据共享方法,其特征在于:包括以下步骤:(1)管理机构生成密钥,安全分发私钥并将生成的公钥记录在区块链系统上;(2)数据提供者利用加密公钥对数据进行加密,并将加密的数据进行上链操作;(3)数据接收者从共享数据上链事件获取加密数据后,通过区块链系统获取属性基加密的公钥,调用属性基加密的解密算法进行解密。2.根据权利要求1所述的基于区块链的匿名数据共享方法,其特征在于:所述步骤(1)中,密钥生成与分发步骤如下:(i)管理机构为每位用户生成环签名的私钥和公钥;(ii)管理机构生成属性基加密的主私钥与公钥,为每位用户生成私钥;(iii)管理机构将环签名和属性基加密的公钥记录在区块链系统上。3.根据权利要求2所述的基于区块链的匿名数据共享方法,其特征在于:所述步骤(2)中,数据加密与上链步骤如下:(i)数据提供者设定访问策略,并从区块链获取属性基加密公钥、环签名公钥,对共享的数据进行加密获得密文;(ii)数据提供者将密文打包成交易,对交易进行环签名,将交易和环签名发生到区块链;(iii)区块链收到交易和环签名后,判断交易和环签名是否合法,若合法,执行下一步;否则,丢弃交易和环签名;(iv)区块链从交易中提取出密文、记录在区块链上,并触发共享数据上链事件。4.根据权利要求3所述的基于区块链的匿名数据共享方法,其特征在于:所述步骤(1)中,设有n个用户,用户user
    i
    的属性值集合为s
    i
    ,其中1≦i≦n;管理机构调用环签名的keygen算法,为用户user
    i
    生成环签名的私钥sk
    ri
    和公钥pk
    ri
    ,将私钥sk
    ri
    安全分发给用户user
    i
    ;管理机构先调用属性基加密的setup算法,生成公钥pk
    abe
    和主私钥msk;再根据用户user
    i
    的属性s
    i
    ,调用keygen(pk
    abe
    ,msk,s
    i
    )算法,为用户user
    i
    生成解密私钥sk
    abei
    ,并安全分发给用户user
    i
    ;管理机构将环公钥集合l=(pk
    r1
    ,pk
    r2
    ,...,pk
    rn
    )和pk
    abe
    写入区块链系统进行公开。5.根据权利要求4所述的基于区块链的匿名数据共享方法,其特征在于:所述步骤(2)中,用户user
    i
    设定共享数据m的属性访问策略a,通过区块链系统获取公钥pk
    abe
    和环公钥集合l,调用enc(pk
    abe
    ,a,m)算法生成密文c;用户user
    i
    将密文c构造成交易消息t,调用环签名的sign(sk
    ri
    ,l,t)算法生成环签名r,将交易消息t和环签名r发送给区块链系统;区块链系统收到交易消息t和环签名r,并检测到是环签名后调用环签名的ver(t,r)算法,验证环签名r是否是交易消息t的环签名,若是,则进行下一步;否则,抛弃收到的交易消息t和环签名r;区块链系统从交易消息t中提取出密文c,将密文c记录到区块链上,并触发共享数据上链事件。6.根据权利要求5所述的基于区块链的匿名数据共享方法,其特征在于:所述步骤(3)中,用户user
    j
    监听到共享数据上链事件发生后,其中,1≦j≦n且j≠i,从事件中获取密文
    c,通过区块链系统获取公钥pk
    abe
    ,并调用属性基加密的解密算法dec(pk
    abe
    ,sk
    abej
    ,c);若user
    j
    的属性集合s
    j
    满足步骤(2)中设定的访问策略a,则解密出明文m,获得用户user
    i
    共享的数据;否则,解密失败。7.根据权利要求1~6所述的基于区块链的匿名数据共享方法的系统,其特征在于:包括管理机构,公有链,数据提供方和数据接收方;所述管理机构负责每位用户生成环签名的私钥和公钥,生成属性基加密的主私钥、公钥,为每位用户生成私钥,并将环签名和属性基加密的公钥记录在区块链系统上;所述数据提供方负责设定访问策略,从区块链获取属性基加密公钥、环签名公钥,对共享的数据进行加密获得密文,将密文打包成交易,对交易进行环签名,将交易和环签名发生给区块链;所述数据接收方负责从共享数据上链事件获取密文,通过区块链系统获取属性基加密的公钥,调用属性基加密的解密算法进行解密;所述公有链即区块链,负责提取并保存管理机构和数据提供方上链的数据,触发数据共享上链事件,并在收到交易和环签名后,判断交易和环签名是否合法,若合法则保存,否则丢弃交易和环签名。8.根据权利要求7所述的基于区块链的匿名数据共享方法的系统,其特征在于:所述管理机构调用环签名的keygen算法,为各个用户生成环签名的私钥和公钥,将私钥安全分发给对应的用户;所述管理机构先调用属性基加密的setup算法生成公钥和主私钥,再根据各个用户的属性调用keygen算法,为各个用户生成解密私钥,并安全分发给对应的用户;所述数据提供方调用enc算法将共享数据生成密文,调用环签名的sig算法生成环签名;所述数据接收方调用属性基加密的解密算法dec进行解密;所述公有链调用环签名的ver算法判断交易和环签名是否合法。

    技术总结
    本发明特别涉及一种基于区块链的匿名数据共享方法及系统。该基于区块链的匿名数据共享方法及系统,管理机构生成密钥,安全分发私钥并将生成的公钥记录在区块链系统上;数据提供者利用加密公钥对数据进行加密,并将加密的数据进行上链操作;数据接收者从共享数据上链事件获取加密数据后,通过区块链系统获取属性基加密的公钥,调用属性基加密的解密算法进行解密。该基于区块链的匿名数据共享方法及系统,不仅保证了数据的安全性,同时具有良好的匿名性和不可链接性,实现了匿名共享,具有较强的隐私性。强的隐私性。强的隐私性。


    技术研发人员:孟奇 孙思清
    受保护的技术使用者:浪潮云信息技术股份公司
    技术研发日:2022.02.21
    技术公布日:2022/5/25
    转载请注明原文地址:https://tc.8miu.com/read-5219.html

    最新回复(0)