跳转至

博客

安得广厦千万间,大庇天下寒士俱欢颜!风雨不动安如山。

零知识证明(Zero-Knowledge Proof, ZKP)详解

一、核心概念

零知识证明 是一种密码学协议,允许证明者(Prover)向验证者(Verifier)证明某个命题为真,而无需透露任何与该命题相关的额外信息。其核心目标是 在保证隐私的前提下验证真实性

二、基本特性

  1. 完备性(Completeness) 若命题为真,诚实验证者会被证明者的论证说服。
  2. 可靠性(Soundness) 若命题为假,任何欺骗性证明者都无法通过诚实验证者的检验。
  3. 零知识性(Zero-Knowledgeness) 验证者无法获得命题之外的任何信息,仅知命题的真伪。

三、工作原理

  1. 交互式 ZKP

    • 步骤

      1. 证明者发送初始信息(如承诺)。
      2. 验证者提出挑战(如随机数)。
      3. 证明者根据挑战生成响应。
      4. 验证者检查响应是否合法。
    • 示例:Feige-Fiat-Shamir 协议(基于平方剩余难题)。

  2. 非交互式 ZKP(NIZKP)

    • 特点:仅需一轮通信(如 zk-SNARKs)。
    • 技术基础
      • 多项式承诺:将复杂计算转化为多项式形式。
      • 可信设置:生成公共参数(如 CRS,Common Reference String)。
      • 代表协议:zk-SNARKs(零知识简洁非交互式知识论证)、zk-STARKs。

四、应用场景

  1. 区块链与加密货币

    • Zcash:使用 zk-SNARKs 隐藏交易金额和参与者身份。
    • 以太坊:支持 ZKP 的 Layer 2 方案(如 zkRollups)提升隐私与扩展性。
  2. 身份验证

    • 匿名登录:用户证明拥有私钥,无需泄露密码。
    • KYC(了解你的客户):在合规前提下保护用户身份数据。
  3. 安全协议

    • 安全多方计算(MPC):多方协作计算时保护输入隐私。
    • 数字签名:结合 ZKP 实现匿名签名(如 DSA 的零知识变种)。
  4. 游戏与谜题

    • 数独验证:证明数独答案正确但不透露解法。
    • 谜题解锁:在游戏中证明拥有通关线索,避免剧透。

五、技术实现

  1. 数学基础

    • 困难问题假设:如离散对数、椭圆曲线离散对数(ECDLP)。
    • 同态加密:允许在密文上直接计算,保护数据隐私。
  2. 主流协议

    • zk-SNARKs

      • 优势:验证速度快,证明尺寸小。
      • 局限:依赖可信设置(如 Groth16 协议)。
    • zk-STARKs

      • 优势:无需可信设置,抗量子计算。
      • 局限:证明尺寸较大。
    • Bulletproofs:适用于短声明的简洁证明(如 Monero 隐私交易)。

  3. 工具与框架

    • Libsnark:开源 zk-SNARKs 库。
    • Circom:电路编译器,用于构建 zk-SNARKs 电路。
    • StarkWare:提供 zk-STARKs 商业解决方案。

六、优缺点分析

优点 缺点
1. 增强隐私:保护敏感数据不泄露。 1. 计算开销大:生成/验证证明耗时。
2. 安全性高:抵御中间人攻击。 2. 实现复杂:需密码学专业知识。
3. 灵活性强:适用于多种场景。 3. 可信设置风险:若参数泄露,安全性崩溃。

七、实际案例

  1. Zcash

    • 使用 zk-SNARKs 实现隐私交易,隐藏发送方、接收方和金额。
    • 挑战:需定期更新可信设置(如 Sprout→Sapling 升级)。
  2. 以太坊 Layer 2

    • zkRollups:将数千笔交易压缩为一个 ZKP,批量提交至主链。
    • 优势:降低 Gas 费用,提升吞吐量。
  3. 匿名身份系统

    • Algorand:结合 ZKP 实现去中心化身份认证。
    • 微软 ION:基于 Bitcoin 的去中心化标识符(DID)。

八、未来趋势

  1. 硬件加速

    • GPU/FPGA 优化:加速证明生成与验证。
    • 可信执行环境(TEE):如 Intel SGX,增强隐私保护。
  2. 标准化与互操作性

    • 通用标准制定:推动 ZKP 协议跨平台兼容。
    • 跨链隐私:实现不同区块链间的隐私资产转移。
  3. 抗量子 ZKP

    • Lattice-based ZKP:基于格密码学,抵御量子计算攻击。

总结

零知识证明通过密码学手段,在不泄露隐私的前提下验证信息真实性,已成为区块链、隐私计算和网络安全的核心技术。尽管面临计算开销和实现复杂性等挑战,但随着硬件优化和标准化进展,ZKP 将在更多领域重塑数据隐私的未来。

分布式系统

设计容错系统的一个基本原则是:网络永远是不可靠的,任何一个消息只有收到对方的回复后才可以认为发送成功,系统设计时总是假装网络会出现异常并采取相应的处理措施。

1

Components

Components are the units of deployment. They are the smallest entities that can be deployed as part of a system. In Java, they are jar files. In Ruby, they are gem files. In .Net, they are DLLs. In compiled languages, they are aggregations of binary files. In interpreted languages, they are aggregations of source files. In all languages, they are the granule of deployment.

Components can be linked together into a single executable. Or they can be aggregated together into a single archive, such as a .war file. Or they can be independently deployed as separate dynamically loaded plugins, such as.jar or .dll or .exe files. Regardless of how they are eventually deployed, well-designed components always retain the ability to be independently deployable and, therefore, independently developable.


编辑于 2025-03-31

第一届雷军班主题班会讲稿

视频链接:Link

同学们下午好啊,其实呢,我也特别期待能有更多的时间和大家交流,但因为工作太忙呢,这个半年时间呢,我们才迎来了第二次的交流啊,也特别高兴呢,能够参与大家班会形式的沟通和交流。刚才的话呢,呃,各位同学们在汇报的时候,呃,我也在仔细听,仔细记,也思考蛮多的。呃,因为今天的时间很有限,虽然我有千言万语啊,我刚才想了想呢,我主要讲三点。

我先呢讲第一个问题,就是我为什么答应平文校长办雷军班?我还记得 2 年前。平文校长呢,第一次跟我谈的时候。我跟校长说呢,我仔细想一想。其实呢,我觉得校长刚才也讲,他听懂了,其实是我婉拒了。第二次校长跟我谈的时候呢,我是压力很大。我是压力很大的。那么。我的思考是什么?

高频 R/W 场景下的性能设计方案

对于这个问题我们需要回归到计算机读写的核心上,计算机的读写速度是有限的,所以需要把数据缓存起来,来提高读写速度。为什么要使用缓存呢?从硬件角度我们知道计算机是有多级缓存架构的,每一级存储设备的读写速度是指数级下降的,越靠近终端存储设备(机械硬盘、固态硬盘)其读写速度越慢,越靠近 CPU 的存储设备其读写速度越快。

缓存是一个有着更快的查询速度的存储技术,这里的更快是指比起从初始的数据源查询(比如数据库,以下都称作数据库)而言。我们经常会把频繁请求的或是耗时计算的数据缓存起来,在程序收到请求这些数据的时候可以直接从缓存中查询数据返回给客户端来提高系统的吞吐量,现在我们来看看有哪些缓存模式可以考虑。

2025-03-23 有感

绕着困难走的人永远不会成为成功的人。一个成功的人,他是主动迎接挑战的人,因为他要开辟新赛道,他如同走在沙漠当中一样,这是任正非的话。

因为没有人会给你指明未来的方向,需要你去开辟新赛道,引领未来发展的方向,这才是伟大的成功者。

所以人呐,是否能成为一个对社会有贡献的人,一是要有信念,二是要有情怀,要敢于面对挑战,迎接挑战。人往往是在迎接挑战的时候,你的才能才会得到极大的释放。

共勉!

比特币的创新设计

比特币在创新上提出了很多亮点,值得我们去学习。主要考虑了避免作恶、负反馈调节和共识机制三个方面。

避免作恶

避免作恶基于经济博弈原理。在一个开放的网络中,无法通过技术手段来保证每个人都是合作的。但是可以通过经济博弈来让合作者受益,让非合作者遭受损失和风险。

分布式系统的核心问题

分布式系统是计算机科学中十分重要的一个研究领域。随着现代计算机集群规模的不断增长,所处理的数据量越来越大,同时对于性能、可靠性的要求越来越高,分布式系统相关技术已经变得越来越重要,起到的作用也越来越关键。

分布式系统中如何保证共识是个经典的技术问题,无论在学术上还是工程上都存在很高的研究价值。令人遗憾地是,理想的(各项指标均最优)解决方案并不存在。在现实各种约束条件下,往往需要通过牺牲掉某些需求,来设计出满足特定场景的协议。

实际上,工程领域中不少问题都不存在一劳永逸的通用解法;而实用的解决思路是,合理地在实际需求和条件限制之间进行灵活的取舍。


更新于 2025-03-18 15:26