首页 > 其他分享 >密码学承诺之原理和应用 - sigma承诺

密码学承诺之原理和应用 - sigma承诺

时间:2024-09-26 18:34:38浏览次数:1  
标签:承诺 -- Sigma commitment go 密码学 sigma gossl

微信公众号:密码应用技术实战
博客园首页:https://www.cnblogs.com/informatics/
GIT地址:https://github.com/warm3snow

简介

在上一篇文章《密码学承诺之原理和应用 - 概览》中,我们详细介绍了常见的密码学承诺原理,本节我们将重点介绍Sigma承诺的实现和应用。

Sigma承诺

Sigma承诺是一种特殊的承诺方案,允许发送方向接收方证明自己拥有某个明文,而不透露明文的具体内容。零知识证明承诺方案根据在证明阶段是否交互可以分为:

  • 交互式零知识证明承诺:发送方和接收方之间需要交互,发送方向接收方发送证明,接收方验证证明。
  • 非交互式零知识证明承诺:发送方可以在不与接收方交互的情况下生成证明,接收方可以验证证明。

本篇文章我们主要针对非交互式Sigma承诺进行详细介绍。

Sigma承诺的构造

非交互式Sigma承诺的构造基于Fiat-Shamir heuristic,具体流程如下:

image

  • [01] 计算承诺:Sender选取随机数\(r\),并生成承诺\(C = r.G\);
  • [02] 计算挑战:Sender计算挑战\(e = H(Q, C)\),并计算证明\(z = r + e.m\);
  • [03] 发送(e, z):Sender发送挑战\(e\)和证明\(z\)给Receiver;
  • [04] 验证:Receiver计算\(A = z.G - e.Q\),并验证\(e == H(Q, A)\)。

值得注意的是,Sigma承诺方案与ECDSA签名方案很像,实际上数字签名方案就是一种Sigma承诺方案变体。

Sigma承诺证明

正确性证明

\[z.G = (r + e.m).G = r.G + e.m.G = C + e.Q \]

\[A = z.G - e.Q = C \]

\[H(Q, A) = H(Q, C) = e \]

因此接收方收到的\((e,z)\)满足验证验证等式,因此按照Sigma承诺协议流程,验证方Receiver可以正确验证

隐藏性证明

非严格证明,由于Receiver仅知道\((e,z,G,Q)\),根据离散对数问题的困难性假设,Receiver无法计算出\(m\)的值,保证了承诺的隐藏性。

绑定性证明

假设Receiver可以找到不同的\((r_1, m_1)\),使得\(e_1 = H(Q, A_1)\),则有:

\[A_1 = z_1.G - e_1.Q_1 = r_1.G + e_1.Q_1 - e_1.Q_1 = r_1.G = C_1 \]

\[e_1 = H(Q, A_1) = H(Q, C_1) \]

而实际上根据\(e_1\)的计算公式,\(e_1 = H(Q_1, C_1)\), 因此根据假设

\[e_1 = H(Q_1, C_1) = H(Q, C_1) \]

根据哈希函数的性质,发送者很难找到不同的哈希原象满足上述等式,因此与假设矛盾,因此Sigma承诺具有绑定性。

零知识性证明

非严格证明,由于Receiver仅知道\((Q, C, e, z)\),并且基于该已知信息,无法计算出\(m\)和\(r\)的值,保证了承诺的零知识性

Sigma承诺实现

以下测试工具基于golang实现,读者可以通过git clone下载代码并进行编译,或者通过go install进行安装。

gossl命令行工具

  1. 直接安装
➜  gossl git:(master) go install github.com/warm3snow/gossl@latest
go: downloading github.com/warm3snow/gossl v0.0.0-20240926033959-072365c6c49c
  1. 下载代码并编译安装
➜  git clone https://github.com/warm3snow/gossl.git

➜  cd gossl && go install
  1. 查看帮助信息
➜  gossl git:(master) gossl -h
gossl is a crypto command-line tool like openssl.

Usage:
  gossl [command]

Available Commands:
  asym        asymmetric cryptography
  commitment  cryptographic commitment
  completion  Generate the autocompletion script for the specified shell
  dgst        digest or hash cryptography
  help        Help about any command
  kdf         key derivation function
  req         certificate request
  sym         symmetric cryptography
  tls         transport layer security(ssl/tls)
  x509        x509 certificate

Flags:
  -a, --algo string     Specify the supported algorithm
      --config string   config file (default is $HOME/.gossl.yaml)
  -h, --help            help for gossl
  -i, --in string       The input file
  -o, --out string      The output file
  -t, --toggle          Help message for toggle
  -v, --verbose         verbose output

Use "gossl [command] --help" for more information about a command.

Sigma承诺命令

  1. gossl支持的承诺算法列表
➜  gossl git:(master) gossl commitment list
Supported commitment algorithm list:
hash
elgamal
pedersen
pedersen_ecc
pedersen_ecc_nizk
sigma

注:gossl中实现的sigma承诺,默认基于椭圆曲线P256实现,当前不支持通过命令行参数指定其他椭圆曲线。

  1. 生成sigma承诺
➜  gossl git:(master) ✗ gossl commitment commit -a sigma --in-text "hello gossl"
Common Params:
	g: 48439561293906451759052585252797914202762949526041747995844080717082404635286||36134250956749795798585127919587881956611106672985015071877198253568414405109
Commitments:
	C: 35978963384416087345885958360294044241038648430056878001124120173772932479707||45314833754090600280947663597071793076156457817915037099266616032681954892305
Openings:
	e: 034f8b5f22ceef281f70c4a119f4928959c5797b0b9b7897d154b10e2c48057adb021605d348c14ebc17df4cc59b85bed3232e15b3dc89cd5e9b7d856bdefa8c3b47
	z: 0159a0679877a454c1d70c1e6865e969ef197abbe5e608cf5c29f0994b6aa09e372dc23a1801f98531b5ac5f4a102da24f4a576b6ea02627bb15fbc15dace2ccc04e5805d25310bcd63e7283b7
  1. 验证sigma承诺
➜  gossl git:(master) ✗ go run main.go commitment verify -a sigma \
> --g "48439561293906451759052585252797914202762949526041747995844080717082404635286||36134250956749795798585127919587881956611106672985015071877198253568414405109" \
> --C "35978963384416087345885958360294044241038648430056878001124120173772932479707||45314833754090600280947663597071793076156457817915037099266616032681954892305" \
> --x "034f8b5f22ceef281f70c4a119f4928959c5797b0b9b7897d154b10e2c48057adb021605d348c14ebc17df4cc59b85bed3232e15b3dc89cd5e9b7d856bdefa8c3b47" \
> --y "0159a0679877a454c1d70c1e6865e969ef197abbe5e608cf5c29f0994b6aa09e372dc23a1801f98531b5ac5f4a102da24f4a576b6ea02627bb15fbc15dace2ccc04e5805d25310bcd63e7283b7"

commitment is verified successfully

Sigma承诺go测试代码

除了使用gossl命令行工具,读者也可以通过以下go test代码进行测试。

// 切换到gossl的commitment目录
➜  cd gossl/crypto/commitment
➜  commitment git:(master) ll
total 64
-rw-r--r--  1 hxy  staff   1.1K  9 26 10:36 CommitPoint.go
-rw-r--r--  1 hxy  staff   1.8K  9 26 18:01 commitment_test.go
-rw-r--r--  1 hxy  staff   1.6K  9 26 17:57 elgamal_commit.go
-rw-r--r--  1 hxy  staff   883B  9 24 15:48 hash_commit.go
-rw-r--r--  1 hxy  staff   1.5K  9 26 10:26 pedersen_commit.go
-rw-r--r--  1 hxy  staff   1.9K  9 26 17:57 pedersen_ecc_commit.go
-rw-r--r--  1 hxy  staff   3.0K  9 26 17:57 pedersen_ecc_nizk_commit.go
-rw-r--r--  1 hxy  staff   2.3K  9 26 18:12 sigma_ecc_nizk.go

// 运行测试代码
➜  commitment git:(master) go test -v -test.run=TestNewSigmaEccNIZKCommitment

=== RUN   TestNewSigmaEccNIZKCommitment
Common Params: 
g: 48439561293906451759052585252797914202762949526041747995844080717082404635286||36134250956749795798585127919587881956611106672985015071877198253568414405109
C: 47040828788287341591092510479443289727519436241786337638489071419327823770936||36818224871262709989945065869868031409225044161759246549601573301209070696557
e: 0368002a62bfdeca7fe138b4efa81193744d3c110aaf3a2f676f6eb51b22cc7538031322ed2b4b02627d85491234c391cfbc33ad7371113a89c16eb647e2c0dcdc09
z: 0163998a9a42f3d225988fdfa521bd794ca7c1c4346a6b8308d399cd740a44a4f0b424b87dc94d75bc8f5045a3180e5a57d55596e98e25f3421ddbebcdff76c091ee7e3ceda107
Verify: true
--- PASS: TestNewSigmaEccNIZKCommitment (0.00s)
PASS

总结

本文详绍了Sigma承诺的构造和证明过程,以及通过gossl工具实现了sigma承诺的生成和验证。Sigma承诺是一种非交互式零知识证明方案,具有隐藏性、绑定性和零知识性等特性,广泛应用于数字签名,匿名交易等场景。
通过本文的介绍,希望读者对Sigma承诺有更深入的了解,为后续的密码学应用提供参考。

参考文献

-【1】Zero-Knowledge Proofs: An illustrated primer
-【2】Sigma Protocol
-【3】gossl

标签:承诺,--,Sigma,commitment,go,密码学,sigma,gossl
From: https://www.cnblogs.com/informatics/p/18434049

相关文章

  • 密码学承诺原理与应用 - 概览
    作者:@warm3snowhttps://github.com/warm3snow微信公众号:密码应用技术实战博客园首页:https://www.cnblogs.com/informatics/标签:技术分享模板目录简介承诺方案原理符号定义方案定义常见承诺方案和原理哈希承诺ElGamal承诺Pedersen承诺零知识证明承诺Sigma承诺Sigma承诺正确......
  • CTF密码学基础知识整理
    一.常见编码转换(1)整数转ascii码INT->CHAR:chr(97)CHAR->INT:ord('a')(2)hex转ASCII>>>importbinascii>>>binascii.a2b_hex('666c6167')b'flag'>>>binascii.b2a_hex(b'flag')b'666c6167&......
  • 密码学初识
    咱也是学上密码学了密码?可能有人要说:啊!这个我懂!不就是账号密码什么的嘛可能还有人说:啊!这个我懂!我还会背摩斯密码呢!但是,“密码学”研究的主要是加密与解密的过程它这个“密码”指的不是寻常说的password(口令),而是cryptography历史上,密码学经过了从古典到近代再到现代的发......
  • 基于OpenSSL的密码管理系统-应用密码学课程报告
    第1章概要设计1.1设计目的本研究旨在设计并实现一个基于OpenSSL的密码管理系统,该系统具备密钥对的生成、密钥上传、密钥的核对、身份认证、文件与邮件的加密和解密、数字签名及数字证书管理等常用功能。研究的意义主要体现在以下几个方面:提升网络信息安全水平:通过集成多种密......
  • 密码学简述
    密码学发展概述密码学应用非常广泛大致的讲就是从古典密码学到现代密码学这两者有一个最大的不同在于:kerckhoff法则kerckhoff法则:加密不应该依赖于加密算法的保密性而是要依赖于秘钥的保密性即使加密算法开源攻击者得不到秘钥就无法通过密文解出明文古典密码学:加密的......
  • 【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介
    文章目录前言适配人群专栏简介专栏亮点阅读方法定价理由品质承诺关于更新环境配置去噪概述文章目录资料汇总(持续更新中。。。)问题汇总(持续更新中。。。)前言先思考几个问题:你是否在全网苦寻【图像去噪(ImageDenoising)】的相关资料?你的目标是否是看懂【图像去噪(Image......
  • 读软件开发安全之道:概念、设计与实施08密码学(下)
    1. 对称加密1.1. symmetricencryption1.2. 使用各方共享的密钥来隐藏数据1.2.1. 对称加密在本质上依赖共享密钥1.3. 所有加密都是通过对明文进行转换,把明文消息(或者原始消息)变成无法识别的形式(也称为密文)​,从而隐藏原始消息内容的1.4. 可逆的转换称为对称加密,因为......
  • 读软件开发安全之道:概念、设计与实施07密码学(上)
    1. 加密工具1.1. 加密工具之所以没有得到充分使用,就是因为人们往往认为密码学是一个准入门槛极高的专业领域1.2. 如今的加密学大部分都源自纯数学,所以只要能够正确使用,加密学确实行之有效1.2.1. 不代表这些算法本身确实无法破解,而是需要数学领域出现重大突破才能实现破解......
  • 密码学之哈希算法
    文章目录1.哈希函数概述1.1哈希函数的定义1.2哈希函数的重要性2.SHA系列算法简介2.1SHA系列的发展历史2.2SHA系列的应用场景3.主要SHA算法详解3.1MD5算法3.2SHA-1算法3.3SHA-2算法家族3.4SHA-3算法4.SHA算法的安全性分析4.1安全性的重要性4.2已知的攻击......
  • 密码学之RSA算法
    文章目录1.RSA算法介绍1.2算法历史与发展1.3算法应用场景2.RSA密钥生成2.1选择素数2.2计算公钥和私钥2.3密钥长度与安全性3算法原理3.1加密原理3.2加密方法3.3加密示例3.4代码实现4.总结1.RSA算法介绍1.2算法历史与发展RSA算法由RonRivest、Adi......