密码学基础:Pedersen Commitment
介绍
Pederson承诺是密码学中承诺的一种,1992年被Torben Pryds Pedersen在“Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing”一文中提出。
目前Pedersen Commitment主要搭配椭圆曲线密码学使用(当然也可以结合指数运算)。具有基于离散对数困难问题的强绑定性和同态加法特性的密文形式。
以结合椭圆曲线为例来说明,Pedersen承诺核心公式表达:
C = r * G + v * H
上述公式中,C为生成的承诺值,G、H为特定椭圆曲线上的生成点,r代表着盲因子(Blinding factor),v则代表着原始信息。由于G、H为特定椭圆曲线上的生成点,所以r * G、v * H可以看作是相应曲线上的公钥(r、v同理也可以视为私钥)。
承诺生成和揭露过程如图:
由于引入了随机盲因子r,对于同一个v会就能产生不同的承诺c,即便敏感隐私数据v不变,最终的承诺c也会随着r的变化而变化,因此提供了信息论安全的隐匿性。这一点类似ECDSA,Schnorr签名采用的手法。
Pedersen承诺加法同态
Pedersen承诺还具有加法同态特性。所谓加法同态,即两数相加和的密文等于两数的密文相加!假设明文a, b ,加密函数e,满足:
c = a + b
e(a) + e (b) = e(c)
Pedersen承诺结合椭圆曲线天然地具备了加法同态的特性,这是椭圆曲线点运算的性质决定的。
假设有两个要承诺的信息v1,v2, 随机数r1,r2,生成对应的两个承诺:
C(v1)=r1∗G+v1∗H
C(v2)=r2∗G+v2∗H
则v1+v2承诺结果:
C(v1+v2)=(r1+r2)G+(v1+v2)∗H
(r1G+v1∗H)+(r2∗G+v2∗H)
C(v1)+C(v2)
Pedersen承诺还可以扩展构造v1∗v2等复杂的情况,来证明新产生的承诺满足与原始承诺之间存在指定的约束关系。
小结
Pedersen承诺产生方式,有些类似加密,签名之类的算法。但是,作为密码学承诺重在“承诺”,并不提供解密算法,即如果只有r,无法有效地计算出隐私数据v。
目前Pedersen承诺在区块链中的应用主要在隐私币中,如zcash,MimbleWimble,Monero等。
密码学基础:Pedersen Commitment相关推荐
- 学习之路-现代密码学基础-001
学习之路-现代密码学基础-第一章密码学概论 转载于:https://www.cnblogs.com/vegetables-Adanos/p/5371420.html
- 计算机 密码学 实验一,计算机网络安全技术-实验一-密码学基础
计算机网络安全技术-实验一-密码学基础 计算机科学与技术系实 验 报 告专业名称 网络工程 课程名称 计算机网络安全技术 项目名称 密码学 班 级 13 网工(1)班 学 号 1304031030 姓 ...
- http、https、密码学基础、GET和POST区别
http协议相关: http协议的特性: http协议是建立在TCP/IP协议之上应用层协议,默认端口为80或者8080.http协议的的特点是无状态,无连接(并不是真的没有连接,而是在请求数据的时候 ...
- ECC密钥结构和密码学基础
参考链接 密码学基础3:密钥文件格式完全解析 ECC数据结构
- 重力传感器 测重力代码_“重力瀑布”如何帮助您教授孩子的密码学基础知识...
重力传感器 测重力代码 by Kamil Tustanowski 通过卡米尔·图斯坦诺夫斯基 "重力瀑布"如何帮助您教授孩子的密码学基础知识 (How "Gravity ...
- 第二章密码学基础与应用备考要点及真题分布
第二章密码学基础与应用 1.密码学基本概念 2.分组密码 3.序列密码 4.Hash函数 5.公钥密码体制 6.数字签名 7.认证 8.密钥管理
- 软考信息安全工程师备考笔记2:第二章密码学基础与应用备考要点
第2章:密码学基础与应用 密码学基础与应用备考要点 https://www.moondream.cn/?p=1319 扫一扫加入信息安全工程师备考群 欢迎加入最棒的信息安全工程师社群,分享信息安全工程 ...
- 密码学基础算法(二)中国剩余定理
随便谷歌了一个图片做首图 原图地址: http://www.siwapu.com/etagid41968b0/ 密码学基础系列: (一) 基于整数的欧几里得算法和扩展欧几里得算法 (二) 中国剩余定理 ...
- 密码学基础:Base64编码
文章概述: 本文目的:写这篇文章的目的主要是整理下密码学中Base64的知识点,并把它们分享出来.并且帮助初探密码学的坛友们一步一步的用C语言将Base64的编码实现出来. 阅读方法:希望大家在浏览完 ...
最新文章
- 统计用户在某一页停留的时间
- 75. CPU 100%运行实战案例分析
- C语言入门题-计算到任意日期的总天数
- 高级ZK:异步UI更新和后台处理–第1部分
- 《c陷阱与缺陷》笔记--注意边界值
- 多线程死锁及解决办法
- GossipView:圆圈布局的自定义view
- golang | 使用结构体抄的学生信息管理系统
- iOS 之 Property List
- php持续交付,持续交付概述
- Halcon形态学操作、区域处理相关常用API
- 计算机系统更新不上怎么办理,电脑系统更新打不开怎么办
- 传智播客视频python视频爬虫
- 有意义的100个小故事
- GitHub上整理的一些工具
- css字体浏览(转)
- Kotlin教程(一)基础
- 普通糖尿病人1周食谱
- asp.net中gridview的绑定数据源实现增删改查
- doctype 怪异模式和标准模式