基于零知识证明的区块链数字资产的私密使用授权方法与流程

文档序号:20770125发布日期:2020-05-15 19:34阅读:260来源:国知局

本发明涉及区块链技术领域,尤其涉及一种基于零知识证明的区块链数字资产的私密使用授权方法。



背景技术:

以比特币为代表的采用utxo模型设计的区块链系统中,每一笔utxo的流动都是公开的,匿名性的保证是通过隐藏人和地址的对应关系来实现,一旦某一个地址和人的对应关系暴露,再配合一些链上数据分析工具,基本上可以追踪到这个人的全部交易记录和资金数量。在以太坊等智能合约区块链中,虽然虚拟机能够提供图灵完备的编程语言实现任意逻辑,但是区块中的所有交易数据也是公开的。零知识证明的发展使得许多用户开始尝试在区块链上实现私密交易,安永(ey)之前发布的nightfall项目,实现了对以太坊上erc-721类资产私密转账的支持。zcash项目,就通过零知识证明设计了交易记录混合方案,实现了和比特币一样的功能,但是链上不存储任何一笔交易的具体信息(发送人、接收人、金额等)。

例如zcash和nightfall这样的项目,将目光聚焦到了私密转账这一领域,但是区块链的应用远远不止token转账这一种。人类社会正在经历信息革命带来的巨大冲击,从企业的视角来看,大部分企业正在经历从制造型企业到创新型企业的转型。企业的核心生产资料,正在从资金、厂房、原料等转变为人、知识(信息)、知识形成的网络,专业的说法叫“社会资本”。在这样的大背景下,知识类资料、成果等数字资产的保护和有效流通对企业来说就变得尤其重要。

基于erc-721标准使得资产的注册是必须公开的,在资产注册以后转入一个私密合约,之后的转移操作才是对外不可见的。另外,对于文章、图片等类型的数字资产,最重要的流通方式不是所有权的转移,而是使用权的购买。比如文章的转载权购买、图片的购买使用等。对于这类数字资产,使用nft模型抽象是不够的,也就更加无法实现使用权的私密购买。

为此,申请人进行了有益的探索和尝试,找到了解决上述问题的办法,下面将要介绍的技术方案便是在这种背景下产生的。



技术实现要素:

本发明所要解决的技术问题在于:针对现有技术的不足而提供一种基于零知识证明的区块链数字资产的私密使用授权方法。

本发明所要解决的技术问题可以采用如下技术方案来实现:

基于零知识证明的区块链数字资产的私密使用授权方法,包括以下步骤:

用户注册步骤:需要在区块链上发布数字资产的用户根据智能合约进行注册;

数字资产注册步骤:注册后的用户根据智能合约对自身拥有的数字资产进行注册;

数字资产授权步骤:当注册后的用户需要将其注册后的数字资产的一部分或全部匿名授权给一个或多个注册后的用户时,该注册后的用户根据智能合约在区块链上生成一条授权记录,并将生成的授权记录发送至被授权的用户;

授权证明步骤:当一个或多个被授权的用户获取到某个数字资产的授权后,该一个或多个被授权的用户根据智能合约对接收到的授权记录生成一个授权证明,以证明其获取到某个数字资产的授权。

在本发明的一个优选实施例中,还包括一验证授权步骤,所述验证授权步骤为当某一注册后的用户接受到另一个注册后的用户提供的授权证明时,该注册后的用户通过调用智能合约验证其接收到的授权证明的有效性。

由于采用了如上技术方案,本发明的有益效果在于:本发明可以在区块链上发布数字资产,但是隐藏数字资产的所有者;同时也可以在链上进行数字资产的使用授权,但是隐藏授权的购买者、所有者以及数字资产信息。从而实现了在区块链上发布、授权数字资产的整个过程的私密化,从原理上保证了所有资产发布和授权的记录不会暴露任何参与者的信息。必要时,使用者又可以依靠区块链上的数据和零知识证明方法,向任意第三方证明资产的所有权或使用权。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,进一步阐述本发明。

本发明的基于零知识证明的区块链数字资产的私密使用授权方法,包括以下步骤:

用户注册步骤:需要在区块链上发布数字资产的用户根据智能合约进行注册;

数字资产注册步骤:注册后的用户根据智能合约对自身拥有的数字资产进行注册;

数字资产授权步骤:当注册后的用户需要将其注册后的数字资产的一部分或全部匿名授权给一个或多个注册后的用户时,该注册后的用户根据智能合约在区块链上生成一条授权记录,并将生成的授权记录发送至被授权的用户;

授权证明步骤:当一个或多个被授权的用户获取到某个数字资产的授权后,该一个或多个被授权的用户根据智能合约对接收到的授权记录生成一个授权证明,以证明其获取到某个数字资产的授权。

验证授权步骤:当某一注册后的用户接受到另一个注册后的用户提供的授权证明时,该注册后的用户通过调用智能合约验证其接收到的授权证明的有效性。

用户注册步骤的具体内容如下:

需要在区块链上发布数字资产的用户根据智能合约进行注册,注册后的用户拥有一对代表用户资产所有权身份的公私钥对,长度均为32字节,分别记为pkr,skr,满足关系:

pkr=h(skr)

注册后的用户还拥有一对代表其区块链身份的公私钥对和对应的区块链地址,分别记为pke,ske,addr,是用标准的椭圆曲线签名算法生成的。用户需要谨慎保管两组公私钥对中的私钥,不可泄露。

用户还拥有一个用户名n,用户名会在验证授权信息时提供给查询方,形式上应该是代表用户身份的自然语义信息。

用户需要根据智能合约完成用户注册流程,才能实现对数字资产的匿名授权。用户注册实际上是在区块链上记录了用户的一些重要信息,将用户的pkr,addr,n三种信息做了一个绑定。这些信息有的不可更改,例如用户的区块链地址addr和代表用户的资产所有权身份的pkr;还有的信息需要权限管理,例如用户的注册名信息n。

据此要保证以下两点:

1.只有拥有skr的用户才能为对应的pkr进行用户注册操作,采用零知识证明来实现;

2.一旦用户完成注册,只有拥有pke对应的私钥ske的地址才能修改用户的注册名,依赖于椭圆曲线签名算法机制来实现。

注意,对于上述两点有一个隐含的需求:用户的私钥不能公开。

下面以用户a为例,具体介绍用户注册的流程:

1.在安全环境下生成需要的两组公-私钥对和其他用户信息数据;

2.生成零知识证明π,包含约束:

3.公开输入:

4.私有输入:

5.调用智能合约方法:organization.register

注:在zokrates的零知识证明生成过程中,可设置输入变量是否公开,公开的变量会出现在生成的证明中,而私有的变量则不会出现。

数字资产注册步骤的具体内容如下:

完成注册后的用户需要根据智能合约对自身拥有的数字资产完成注册流程,才能对这些资产进行匿名授权。对于任意的数字资产,用户需要先为其生成一个唯一的数字id,记为α。在本智能合约中,数字id可以是不超过32字节的任意数据。

数字资产注册实际上是在区块链上记录了用户的资产公钥pkr和α的对应关系,据此需保证以下两点:

1.只有拥有skr的用户才能为对应的pkr注册资产,采用零知识证明来实现;

2.同样的α只能被注册一次。

下面以用户a注册资产α为例,具体介绍数字资产注册的流程:

1.计算

2.生成零知识证明π,包含约束:

3.公开输入:

4.私有输入:

5.调用智能合约方法:shield.register

数字资产授权步骤的具体内容如下:

注册后的用户可以将注册后的数字资产匿名授权给一个或多个注册后的用户。授权的本质是在区块链上生成了一条授权记录,记录中隐含了资产α以及被授权方的信息。据此需保证以下三点:

1.只有经过注册的资产α才可以被授权,需给出资产α的注册记录存在的零知识证明;

2.授权方必须拥有α在注册时对应的资产私钥skr,需给出授权方拥有skr的零知识证明;

3.资产α、授权方信息和被授权方信息不能公开。

下面以用户a授权资产α给用户b为例,具体介绍数字资产授权的流程:

1.获取用户b的资产公钥

2.计算

3.获取在mtr上的兄弟节点路径值;

4.获取mtr的根节点rootr;

5.生成零知识证明π,包含约束:

6.公开输入:

7.私有输入:

8.调用合约方法:shield.authorize

授权证明步骤的具体内容如下:

用户为了向第三方展示自己获取了某个数字资产的授权,需要生成一个授权证明。授权证明本质上是证明了用户与区块链上的授权记录的对应关系,即:

1.区块链上存在α和pkr对应的授权记录zα

2.用户拥有pkr对应的私钥skr

下面以用户b生成资产α的授权证明为例,具体介绍生成授权证明的流程:

1.获取计算

2.计算

3.获取在mtr上的兄弟节点路径值;

4.获取在mtz上的兄弟节点路径值;

5.获取mtz的根节点rootz;

6.获取mtr的根节点rootr;

7.生成零知识证明π,包含约束:

8.公开输入:

9.私有输入:

向所有人公开,作为用户b拥有来自a的资产α授权的证明。

验证授权步骤的具体内容如下:

对于其他用户提供的授权证明,可以通过调用智能合约的方法来验证授权证明的有效性:

shield.authorizecheck

方法返回:

1.b是否获得a的授权;

2.授权方a的用户信息;

3.被授权方b的用户信息。

智能合约

本发明使用了一系列智能合约来实现与区块链的交互,主要包含以下几类:

·用户相关:用于用户注册、用户名修改等;

·shield合约:用于用户发起对资产的注册、授权和验证等;

·verifier合约:使用椭圆曲线配对函数来验证零知识证明,作为library供其他合约调用。

下面具体介绍两个重要的智能合约内容:

organization.sol

·register

–在区块链上注册用户,记录用户的注册名、资产公钥和区块链地址的对应关系

·resetname(na):

–修改用户名,只有用户注册的区块链地址有权限调用

·get(pkr)

–获得资产公钥pkr对应的用户注册名

shield.sol

·register

–在区块链上注册数字资产α,这里用户a的信息是隐藏的;

将被保存到mtr中去;

–更新mtr

–生成一个α对应的erc-721token,所有者为shield合约。

·authorize

–将数字资产α授权给b,这里数字资产α的信息是隐藏的–合约需要验证root曾经或刚好是mtr的根节点

·verify(π,inputs)

–通过调用verifier合约的方法来验证一个证据π和对应的输入inputs是否匹配

·authorizecheck

验证授权证明信息。

本发明可以在链上发布数字资产,但是隐藏数字资产的所有者。例如:采用发布图片来举例子。比如,某一个用户a可以在区块链上注册一张图片,区块链上没有这张图片的原始内容,只有这种图片的哈希值和id。从区块链上也看不出这张图片是用户a发的。下一步,假如用户a还需要证明用户a对图片的所有权,用户a在某个媒体上发布这张图片时可以附带一段“文本”,将这段文本拿到区块链上查询,可以证明用户a是这张图片的作者。但是单独通过区块链上数据,任何人都无法查到用户a还有哪些其他图片。其他人即使有了这段文本,也无法伪造所有权证明,也无法对图片进行售卖。

本发明还可以在链上进行数字资产的使用授权,但是隐藏授权的购买者、所有者以及数字资产信息。比如,某一用户b在媒体上看到一张图片,可以付费购买使用权,但是没有人知道用户b从谁手里买了什么。在用户b的博客里使用购买的图片时用户b也可以附带一段“文本”,通过这段文本可以在链上确认用户b的付费购买的有效性,但是无法查到我的其他任何购买记录,也无法查到用户b是从谁手里购买了这张图片。

通过上述的功能,本发明实现了图片发布、购买的全流程隐私保护。同时也支持在必要时公开一些信息,用以证明所有权,并且不暴露任何其他的额外隐私信息。

需要注意的是,虽然本发明采用了图片来举例子,但是本发明实现的功能可以用在任何类型的数字资产的注册和授权上。

以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1