snarkjs+circom实战零知识证明【渔船监管】

简介:

零知识证明可以在不泄露具体信息的情况下向其他人证明自己掌握该信息,这听起来非常适合去中心化应用。在这个教程中,我们将利用zksnark来实现一个具体的NodeJS零知识证明应用:渔船无需透露自己的具体位置,就可以向监管机构证明自己处于划定的合法捕捞区内 —— 我们的主要武器是snarkjs和circom。

在这里插入图片描述

用自己熟悉的语言学习以太坊DApp开发:Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart

1、需求分析

设计零知识证明应用方案的第一步是要将具体的问题转换为一个电路。我们要证明渔船处于合法捕捞区内,这个问题中存在以下变量:

  • 合法捕捞区的范围,可以用该区域的经度/维度的最大值和最小值来表示渔船的位置,用渔船的经度和维度来表示

容易得到如下的输入输出映射:

                        +--------------+ 
        渔船经度/维度 ->|              |
                        |              |
捕捞区经度最大/最小值 ->|    电路      |-> 在/不在合法捕捞区
                        |              | 
捕捞区纬度最大/最小值 ->|              |
                        +--------------+                                            

2、circom电路实现

据此,我们可以得到如下的circom电路定义:

在这里插入图片描述
其中:

  • latitudeRange:电路输入,表示合法捕捞区域的纬度的最小值和最大值,数组
  • longitudeRange:电路输入,表示合法捕捞区域的经度的最小值和最大值,数组
  • fishingLocation:电路输入,表示渔船的经度和维度,数组
  • out:电路输出,1表示渔船在合法捕捞区,0表示渔船不在合法捕捞区

由于我们要隐藏渔船的具体位置,因此在上面的circom电路中,你可以看到fishingLocation被定义为private。

3、circom电路编译

如果还没有安装circom的话,使用如下命令全局安装circom:

npm install -g circom

注意:推荐使用node 12,因为内置了原生的大数计算,效率提升10倍!

使用如下命令编译电路文件InRange.circom,输出结果命名为InRange.json:

circom InRange.circom -o InRange.json

4、zksnark的可信设置

在使用zksnark之前,需要一个可信设置,而且该可信设置依赖于具体的电路,例如我们编译得到的InRange.json。

使用snarkjs来创建这个可信设置,同样,如果需要安装的话,使用如下命令:

npm install -g snarkjs

现在我们利用渔业监控电路进行可信设置:

snarkjs setup -c InRange.json

上面的命令将会在当前目录创建两个文件:proving_key.json和verification_key.json。其中proving_key.json用于证明你的输入是有效的(满足电路约束),而verification_key.json用来验证别人提供的证据。

5、计算ziksarnk电路信号的见证(witness)

在我们创建提供给其他人的证据之前,需要先计算出电路中所有信号(包括输入信号和中间信号)
的见证。为此我们需要创建一个输入文件input.json,其中包含所有输入(公开输入和私有输入)的值,然后利用这个输入文件计算得到见证文件witness.json,这两个文件都不会公开。

下面是我们的渔业监控电路的输入文件示例:

{
    "latitudeRange": [ 20, 21],
    "longitudeRange": [ 176, 190],
    "fishingLocation": [ 20, 180]
}

使用sparkjs来计算得出见证文件witness.json:

snarkjs calculatewitness -c InRange.json

6、创建zksnark证据

有了witness.json,我们就可以创建提供给其他人的证据了:

snarkjs proof

上面的命令将在当前目录生成proof.json和公开文件public.json,publc.json实际上就是witness.json文件内容的一个子集,其中仅包含电路中可公开信号的值。

现在目录里的文件如下图所示:

在这里插入图片描述

7、校验zksnark证据

现在你(渔船船长)可以把verification_key.json、proof.json和public.json提供给监管机构了,监管方使用如下命令即可验证你的船的确在合法捕捞区内,但却不知道你的具体位置:

snarkjs verify

GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOD!


原文链接:零知识证明实战渔业监 — 汇智网

目录
相关文章
|
5月前
|
人工智能 安全 区块链
零知识证明:隐私保护的新前沿
【6月更文挑战第13天】零知识证明是种密码学技术,允许证明者向验证者证明陈述的真实性而不透露任何信息。这种技术基于数学难题,应用于隐私保护身份验证、区块链交易和敏感数据共享,保护用户隐私的同时确保安全性。尽管面临计算复杂度高和安全验证等挑战,零知识证明有望与区块链、AI等技术结合,为隐私保护领域带来创新突破。
|
2月前
|
安全 算法 网络安全
网络安全与信息安全:构建数字世界的坚固防线在数字化浪潮席卷全球的今天,网络安全与信息安全已成为维系社会秩序、保障个人隐私和企业机密的关键防线。本文旨在深入探讨网络安全漏洞的本质、加密技术的前沿进展以及提升公众安全意识的重要性,通过一系列生动的案例和实用的建议,为读者揭示如何在日益复杂的网络环境中保护自己的数字资产。
本文聚焦于网络安全与信息安全领域的核心议题,包括网络安全漏洞的识别与防御、加密技术的应用与发展,以及公众安全意识的培养策略。通过分析近年来典型的网络安全事件,文章揭示了漏洞产生的深层原因,阐述了加密技术如何作为守护数据安全的利器,并强调了提高全社会网络安全素养的紧迫性。旨在为读者提供一套全面而实用的网络安全知识体系,助力构建更加安全的数字生活环境。
|
1月前
|
SQL 安全 算法
网络安全与信息安全:构建数字世界的防线在数字化浪潮席卷全球的今天,网络安全与信息安全已成为维系社会秩序、保障个人隐私与企业机密的重要基石。本文旨在深入探讨网络安全漏洞的本质、加密技术的前沿进展以及提升安全意识的有效策略,为读者揭示数字时代下信息保护的核心要义。
本文聚焦网络安全与信息安全领域,详细剖析了网络安全漏洞的形成机理、常见类型及其潜在危害,强调了及时检测与修复的重要性。同时,文章系统介绍了对称加密、非对称加密及哈希算法等主流加密技术的原理、应用场景及优缺点,展现了加密技术在保障数据安全中的核心地位。此外,针对社会普遍存在的安全意识薄弱问题,提出了一系列切实可行的提升措施,如定期安全培训、强化密码管理、警惕钓鱼攻击等,旨在引导公众树立全面的网络安全观,共同构筑数字世界的安全防线。
|
6月前
|
机器学习/深度学习 SQL 安全
网络安全与信息安全:防范之道,加密之术
【5月更文挑战第16天】 在数字化时代,网络安全与信息安全已成为维护社会稳定、保护个人隐私和企业资产的重要屏障。本文深入探讨了网络安全漏洞的成因和类型,分析了加密技术在数据保护中的关键作用,并强调了提升安全意识的必要性。通过对现有防御机制的剖析和未来趋势的预测,文章旨在为读者提供全面的网络安全与信息安全知识结构,以应对日益复杂的网络威胁。
|
6月前
|
SQL 安全 算法
网络安全与信息安全:防范之道,加密之术,意识之重
【5月更文挑战第30天】在数字化浪潮中,网络安全与信息安全保障已成为现代企业和个人不可忽视的重要议题。本文将深入探讨网络安全漏洞的成因与影响,剖析加密技术的种类及其应用,并强调提升安全意识的必要性。通过综合分析,旨在为读者提供一份全面的网络与信息安全知识分享,助力构建坚固的数字防线。
|
6月前
|
安全 算法 网络安全
保护数据、保障安全:网络安全与信息安全探析
在当今数字化时代,网络安全和信息安全的重要性愈发凸显。本文将探讨网络安全漏洞、加密技术以及安全意识等方面的知识,并提出一些应对措施,以加强个人和组织在网络空间的安全保障。
51 0
|
安全 算法 大数据
新监管形势下的数据流通合规技术解最新探究 (连载一)
新监管形式下,数据的合规合理应用和数据安全是大家密切关注和探讨的话题点,而DataTrust隐私增强计算平台,能在保障数据隐私及安全前提下完成多方数据联合分析、联合训练、联合预测,实现数据价值流通,本系列内容将陆续为大家介绍其背后的工程框架和及业内隐私计算技术。
734 0
新监管形势下的数据流通合规技术解最新探究 (连载一)
|
存储 安全 算法
密码学技术在网络信息安全中的应用与发展探析
伴随我国网络技术的大众化和社会化普及,计算机中的网络安全已经成为了能够影响网络效能的重点性问题,并且这代表在一定程度上为计算机网络的安全问题提出了更深层次的要求。网络中的安全信息系统应当充分保证在网络中传输的实际信息完整性与保密性,并且当前我国的信息发展过程中能够保证通信与网络安全的相关技术有很多种类型,其中对网络信息数据的加密技术就是能够保证网络信息安全的最核心技术措施,并且对网络信息的加密操作同时也是现代密码学的重要组成部分。在当前数据加密技术的发展过程中,存在两种加密体制,分别是传统密钥加密体制和公开密钥加密体制,其中后者对数据加密与数据签名两个发展方面应用广泛。
|
区块链 存储 数据安全/隐私保护
带你读《区块链工程实践 行业解决方案与关键技术》之一:基于区块链的可信电子证照
本书是一部能全方位指导区块链项目落地的实操性著作。作者是远光软件的区块链首席科学家,而本书是作者5年来在区块链领域的实践总结。通过5个经典的行业案例,从总体设计、业务设计、功能接口设计、架构设计这4个维度详细讲解了如何构建一个完整的区块链行业解决方案,同时讲解了实现每个解决方案需要的关键技术和方法。