batch verification

https://www.btcstudy.org/2021/12/08/schnorr-applications-threshold-signatures/

 

https://www.btcstudy.org/2021/12/06/schnorr-applications-batch-verification/

 

https://eprint.iacr.org/2012/549.pdf

 

https://eprint.iacr.org/2012/549.pdf

 

错误示范:

http://joces.nudt.edu.cn/CN/Y2021/V43/I07/1236

 

Schnorr signature variant Elliptic Curve Schnorr signatures for message m and public key P generally involve a point R, integers e and s picked by the signer, and the base point G which satisfy e = hash(R || m) and s⋅G = R + e⋅P. Two formulations exist, depending on whether the signer reveals e or R:

  1. Signatures are pairs (e, s) that satisfy e = hash(s⋅G - e⋅P || m). This variant avoids minor complexity introduced by the encoding of the point R in the signature (see paragraphs "Encoding R and public key point P" and "Implicit Y coordinates" further below in this subsection). Moreover, revealing e instead of R allows for potentially shorter signatures: Whereas an encoding of R inherently needs about 32 bytes, the hash e can be tuned to be shorter than 32 bytes, and a short hash of only 16 bytes suffices to provide SUF-CMA security at the target security level of 128 bits. However, a major drawback of this optimization is that finding collisions in a short hash function is easy. This complicates the implementation of secure signing protocols in scenarios in which a group of mutually distrusting signers work together to produce a single joint signature (see Applications below). In these scenarios, which are not captured by the SUF-CMA model due its assumption of a single honest signer, a promising attack strategy for malicious co-signers is to find a collision in the hash function in order to obtain a valid signature on a message that an honest co-signer did not intend to sign.
  2. Signatures are pairs (R, s) that satisfy s⋅G = R + hash(R || m)⋅P. This supports batch verification, as there are no elliptic curve operations inside the hashes. Batch verification enables significant speedups

身份隐私相关方向

  • 环签名技术和群签名技术
  • 直接匿名证明
  • 身份隐私方面的常见算法,典型应用,效果分析
  • 环签名、群签名、DAA的基本原理和典型应用
  • 分析区块链中的身份隐私应用

 

隐私保护相关方向

  • K匿名、L多样化、差分隐私、隐私信息检索等技术
  • 可搜索加密
  • 函数加密
  • 隐私保护相关技术和典型应用
  • 链下计算-链上验证框架,分析目前的一些实际应用,例如在platon、以太坊上的实践情况

 

ZKP和MPC在隐私保护方面的典型应用

  • ZKP,∑协议,SNARK,STARK等
  • MPC的不经意传输和电路,秘密分享等在不同安全要求下的应用

 

抗量子计算密码学

  • 基于格密码的抗量子签名、加密(kyber)
  • 全同态加密及bootstrap(bgv、ckks)

 

 

 

密码学基础架构

在密码学算法方面,随着区块链推广发展中面对的不同的应用需求,更新的、更多的密码学算法被引入区块链中。

  • 在Hash算法方面:比特币采用的哈希算法是SHA-256算法。由于此算法依赖于计算能力,显卡挖矿和采用ASIC芯片的矿机的出现,使得比特币面临算力中心化的威胁。故此类计算依赖的哈希算法在区块链中的应用逐渐被替代。莱特币、狗狗币等采用SCRYPT算法,以太坊采用Ethash算法,零币采用Equilhash算法,门罗币[16](Monero)采用CryptoNight算法。达世币(Dash)等采用多种哈希算法串联进行了多轮哈希算法,即前一轮哈希的输出作为下一轮哈希的输入。Heavycoin(HVC)则采用了并联哈希算法,将多种哈希算法得出的结果各取一部分并联成最终结果。
  • 在数据组织存储结构方面:比特币中采用的Merkle树结构为传统结构,每笔交易的哈希值作为Merkle树的叶子节点,生成的根节点被包含在区块头中。以太坊采用的账户模型,除了交易树外,还有状态树和收据树。状态树包含了以太坊所有账户的状态,以太坊采用的是新型数据结构Merkle Patricia Tree。超级账本[17](Hyperledger)提出了Bucket树进行数据存储。
  • 在数字签名方面:除普通的数字签名外,针对特定的应用需求,密码学组件如环签名、承诺等算法也被用于区块链中。为保护区块链数据隐私,环签名(Ring Signature)被引入,最典型的应用是门罗币在保证交易的隐私性方面应用了环签名技术和一次性地址, 具有不可链接和不可追踪两大特性。
  • 在其他密码技术方面:承诺(Commitment)也被用于区块链隐私保护上。承诺方将某消息的承诺发给接收方,接收方不能从承诺值中获得被承诺消息的信息(隐蔽性),承诺方不能将承诺值打开为不同的消息(绑定性)。区块链中常用到的为同态承诺。在Mimble Wimble[18]中,交易的输入输出均以同态承诺的形式出现和处理,在零币和门罗币中,交易金额通过同态承诺来隐藏。

 

PKI体系

在计算机网络中,公钥基础设施(PKI)作为保证数据机密性、完整性、不可抵赖性以及身份鉴别的重要方式,被广泛应用在电子邮件、电子商务、网上银行及资源发布等日常网络应用中。

区块链技术在保证用户身份信息存储安全和为用户实体提供信用背书方面具有一定的技术优势。近年来,很多研究人员开始探索将区块链技术应用到身份认证和身份管理领域。当前的主要研究方向包括基于区块链技术实施身份认证、基于区块链技术构建分布式PKI和基于区块链技术增强传统PKI等。

在PKI体系为区块链提供公钥基础设施的同时,区块链也提高了PKI体系的安全性能。目前PKI体系为中心化结构,即由CA来颁布证书,一旦CA的私钥被泄露,则面临严重的安全问题。区块链对此的改进主要分为两个方向[19]:加强中心化PKI安全和构建去中心化的PKI。前者是在维持现有PKI体系不变的基础上,基于区块链建立安全高效的证书管理平台,以IKP[20],Certchain[21],Certledger[22]为典型代表。后者是使用区块链来构建去中心化的PKI平台,代表方案有Certcoin[23],BlockPGP[24], Blockstack[25]等。

 

零知识证明

零知识证明是指证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明首先由20世纪80年代名为《交互式证明系统的知识复杂性》的论文中提出。该论文在NP的证明系统中引入了“交互”和“随机性”,构造了交互式证明系统,并提出了零知识证明的定义和性质。

零知识证明被广泛运用于区块链数据的隐私保护中,其中应用最多是zk-SNARKs[26]技术。然而,zk-SNARKs需要依赖可信第三方执行初始化设置,若此过程中的某些变量被泄露,则会危及系统安全。为解决此问题,zk-STARKs[27],Fractal[28],Supersonic[29],Halo[30],Marlin[31],Plonk[32] 等方案被提出。此外,Bullet Proof[33]技术被门罗币等项目用于交易金额范围证明上。在零知识证明提供隐私保护的同时,如何有效审计监管这些数据也是重要的研究方向,如PGC[34]在账户模型下既保证了交易的机密性,又实现了数据审查功能。零知识证明也被用于以太坊的链下扩容方案中ZK-Rollup[35]中,用来证明链下状态根据合法交易进行了正确更新,从而以较小的证明验证开销实现对大批量链下交易的证明。

 

可信执行环境(TEE)

系统级隔离技术主要是是通过对硬件进行安全扩展,并配合相应的可信软件从而在系统中构建一个相对安全可靠的可信执行环境(Trusted Execution Environment,TEE)。TEE是一个隔离的执行环境,以保护代码与数据的机密性。通过硬件层面的辅助和远程证明(Remote Attestation,RA),TEE可以向第三方证明本地执行环境是诚实的,运行代码与结果等未经宿主等恶意篡改。

2012年ARM公司推出了TrustZone安全解决方案,旨在提供独立的安全操作系统及硬件虚拟化技术,为手机安全支付的过程中提供可信的执行环境。2013年,Intel公司提出了SGX (software guard extensions)指令集扩展,旨在提供用户空间的可信执行环境。TrustZone和SGX能够建立一个可信的隔离空间,用来保障用户关键代码和数据的机密性和完整性。2017年,百度团队根据Intel SGX提出了支持Rust编程的Rust SGX。TrustZone、SGX和Rust SGX在区块链等分布式系统中得到了广泛的应用。

一些区块链平台也利用TEE的特性提出了新的设计。Hyperledger Sawtooth中利用TEE实现了时间消逝证明的共识算法(Proof of elapsed,PoET),每个区块链节点都在 SGX 中根据预定义的概率生成下一次获得记账权的等待时间,其他节点可以通过 SGX 完成验证。CCF(原名CocoFramework)、Teechain、Ekiden都是基于TEE进行设计的区块链平台,能够在保证安全性的基础上提高区块链的吞吐量。Brandenburger等将TEE引入Hyperledger Fabric中,提高了区块链的安全性。

 

 

 

目前,区块链平台主要集成与实现了商用密码算法SM2、SM3、SM4算法。

其中,SM3、SM4均使用go语言实现,并依托golang编译器实现跨平台的移植与支持。

鉴于SM2的运算较SM3、SM4多出几个数量级,在使用go语言兼容跨平台移植与支持的前提下,着重使用汇编语言对于arm64和x86_64平台进行了优化。

在异构计算平台方面,区块链平台使用了GPU来进行SM2的运算,以加速批量交易的签名验证。

至于Java方面的实现,则在bouncycastle的基础上实现商用密码的上层应用。

posted @ 2024-07-11 16:59  zJanly  阅读(12)  评论(0编辑  收藏  举报