第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么
第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么
Sigma协议
Sigma协议是Alice想要向Bob证明一些东西的协议(Alice知道一些秘密)。他们有下面的一般范式:Alice知道一个秘密,Alice和Bob都分享了一些相同的信息。因此:
- Alice给Bob发送了一个值,这个值叫做承诺(commitment)。
- Bob均匀的随机选择一个挑战(challenge)发送给Alice。
- Alice计算一个回应(response)发送给Bob。
- Bob检查回应,接受或者拒绝Alice的解释。
传说中,如果你把上面的过程画成一个图,这个图看起来像sigma(\(\sigma\)),所以这个协议就叫Sigma协议。(原来是这样啊2333)
在密码学中,我希望Sigma协议有下面的属性:
- 正确性,如果每个人都做了他们应该做的,Bob应该接受。
- 公正性,如果Alice撒谎了,Bob可以知道(Alice不能欺骗Bob让他接受错误的结果)。
- 零知识性,如果Alice说真话了,那么Bob不能知道她的秘密输入是什么。
一个更一般的理解
在提供了一个粗略的概述之后,我们现在根据David的[博士论文]https://www.cs.bris.ac.uk/~bernhard/thesis.pdf提供了一个更正式的处理方法。
定义Sigma协议
让\(k\)是一个域。我们对一个线性函数感兴趣\(f:W \rightarrow X\),从\(k\)维空间到另一个空间的映射,其中Alice和Bob都知道一些公共的\(x \in X\)。同时Alice也知道一个秘密\(w \in W\),使得\(f(w) = x\)。Alice想要给Bob证明她知道\(x\)的原像。
如果很多密码学都在椭圆曲线上完成。椭圆曲线是一组\(P=(x,y)\)形式的点和一个特殊的点“在无穷远处”,它是曲线的一个特别的成员。这些点都满足一些方程,最重要的是椭圆线中的加法使得椭圆曲线满足群的条件。每次由一个大素数\(p\)开始,在基\(k = F_p\)上计算,同时考虑点\(P\)在\(E_p = E \cap \mathbb F_p \times \mathbb F_p\)。
许多椭圆曲线协议从使用点乘法生成密钥对开始:每个人协商一个共同的公共的基点\(P\)。然后一个人能选择一个密钥\(x \in F_p\)。然后计算相关的公钥\(Y = x \cdot P\)。如果Alice想要在某处注册她的公钥,如果注册员要求她证明她知道相关的密钥,否则她可以将其他人的密钥注册为自己的密钥,这对安全性是有好处的。但是爱丽丝当然不应该把她的秘密钥匙告诉登记员。例如,她可以使用Sigma协议来证明她知道自己声称知道的密钥,而不需要透露。
如果一个人能采取\(W = \mathbb F_p\)作为一个\(k\)维向量,同时\(X = E_p\),点乘固定的基点,特殊的,\(f:W \rightarrow X\),\(w \mapsto w \cdot P\)是一个线性函数。矩阵乘积函数也是如此。假设Alice有一个密钥\(x\)有一个公钥\(Y = x \cdot P\),同时有人给她发送了一个ElGamal密文\((C,D)\)。她想要解密,然后证明她已经成功的解密了,一种方式就是计算一个解密\(S = x \cdot C\)。解密就是\(D-S\),任何人都能从\((C,D)\)和\(S\)计算出来。因此ALice想要展示她知道\(x\),\(Y = x \cdot P\)和\(S = x \cdot C\)。因此我们设置\(W = k,X = E_p \times E_p\),同时\(f(x)=(x \cdot P,x \cdot C)\)线性函数\(f:W \rightarrow X.\)
Sigma协议\(f:W->X\)就是下面的结构。Alice知道\((x,w) \in X \times W\),\(f(w) = x\),Bob知道\(x\)。
1.Alice选择\(r \in W\)随机的。设置\(A = f(r)\),然后把\(A\)发送给Bob。这就是承诺(Alice对\(r\)进行承诺)。
2.Bob选择一个\(c \in k\)随机的,然后发送给Alice。这就是挑战。
3.Alice计算\(s = r+c \cdot w\)。然后发送\(s\)给Bob。
4.如果\(f(s) = A+c \cdot x\)成立,Bob接受。
让我们来看Sigma协议的性质。
正确性
在刚才的协议中,正确性意味着如果每个人都遵守协议,那么协议按部就班的进行。在Sigma协议的上下文中,这意味着Alice和Bob这么做,Bob最后应该接受状态。这是对的因为\(f\)是线性的。
公平性
公平性意味着Alice不能证明一个错误的陈述。大多数人都会很迷惑因为这是他们首先知道的是Schnoor协议,证明\(y = x \cdot P\),因此Alice证明这样的\(x\)存在。但是这是显而易见的!(Alice也证明了她知道\(x\),虽然很有趣,但这是另一个属性了。)让我们看看例子,Alice证明\(S\)是正确的在公钥\(Y\)下对\(C\)的解密。因此,Alice证明\(x\)存在,使得\(Y = x \cdot P\)和\(S = x \cdot C\)。这里说的就是函数\(f\)的原像是二维k-向量空间\(X\)的一维子空间。在我们的表示中,公平性意味着Bob不会接收(除非以可忽略概率)不是\(f\)原像的\(x\)。
Sigma协议是公平的。实际上,协议的属性不止于此,它存在的性质叫做特殊公平性。非正式的,考虑Alice已经发送给Bob的承诺\(A\)。针对哪个\(c\)(Bob提供的),Alice能找到一个\(r\)使得Bob接受?如果Alice存在\(1/|K|\)的可能让Bob接受(\(|K|\)是指数空间大的)。特殊公平性就是说,如果Alice能让Bob从\(|K|\)个挑战中找到两个挑战,那么这两个挑战分别是\((c,s)\)和\((c^{'},s^{'})\)。通过代数计算我们就有\(d = (c-c^{'})^{-1},w = d \cdot (s-s^{'})\)。这样计算出\(w\)那么只能满足其中一个等式。
零知识性
这个协议是公平的,Bob很高兴。但是Alice仍然需要知道Bob不能从协议中知道\(w\)的值。实际上Alice要的更多,尽管Alice向Bob证明的秘密,但是Bob不应该能向Charlie证明Bob知道这个秘密。零知识说得更多,Bob从协议中什么也没学到,除了Alice知道\(w\)。
这个Sigma协议的零知识证明......并不存在!与人们在课本零知识一章中学习Sigma协议后可能会猜测的相反,Sigma协议通常不是零知识,而密码学的初学者在考试时最好记住这一点。(他们满足了一个较弱的要求,称为诚实验证者零知识。)
然而,在零知识的背景下讨论Sigma协议并不是完全武断的:人们可以通过几种方式使它们成为零知识,其中最实用的是使它们成为非交互的。但这是下周的话题……
第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么的更多相关文章
- salesforce 零基础学习(四十六)动态美观显示列表中记录的审批状态
项目中,申请者申请某些事项以后,常常需要在申请列表中查看当前申请的记录所在的审批状态,动态美观的显示状态可以使UI更符合客户要求,比如下面这样. 以Goods__c表为例,申请者申请的一些采购以前需要 ...
- 第二十六个知识点:描述NAF标量乘法算法
第二十六个知识点:描述NAF标量乘法算法 NAF标量乘法算法是标量乘法算法的一种增强,该算法使用了非邻接形式(Non-Adjacent Form)表达,减少了算法的期望运行时间.下面是具体细节: 让\ ...
- NeHe OpenGL教程 第四十六课:全屏反走样
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 四十六、android中的Bitmap
四十六.android中的Bitmap: http://www.cnblogs.com/linjiqin/archive/2011/12/28/2304940.html 四十七.实现调用Android ...
- Android简易实战教程--第四十六话《RecyclerView竖向和横向滚动》
Android5.X后,引入了RecyclerView,这个控件使用起来非常的方便,不但可以完成listView的效果,而且还可以实现ListView无法实现的效果.当然,在新能方便也做了大大的提高. ...
- “全栈2019”Java第四十六章:继承与字段
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 第四十二个知识点:看看你的C代码为蒙哥马利乘法,你能确定它可能在哪里泄漏侧信道路吗?
第四十二个知识点:看看你的C代码为蒙哥马利乘法,你能确定它可能在哪里泄漏侧信道路吗? 几个月前(回到3月份),您可能还记得我在这个系列的52件东西中发布了第23件(可以在这里找到).这篇文章的标题是& ...
- 第四十九个知识点:描述在IPsec和TLS后的基本想法
第四十九个知识点:描述在IPsec和TLS后的基本想法 网络安全协议(Internet Protocol Security,IPsec)和安全传输层协议(Transport Layer Securit ...
- 第四十八个知识点:TPM的目的和使用方法
第四十八个知识点:TPM的目的和使用方法 在检查TPM目的之前,值得去尝试理解TPM设计出来的目的是为了克服什么样的问题.真正的问题是信任.信任什么?首先内存和软件运行在电脑上.这些东西能直接的通过操 ...
随机推荐
- SpringBoot Profiles 多环境配置及切换
目录 前言 默认环境配置 多环境配置 多环境切换 小结 前言 大部分情况下,我们开发的产品应用都会根据不同的目的,支持运行在不同的环境(Profile)下,比如: 开发环境(dev) 测试环境(tes ...
- Java 性能优化的 50 个细节
在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. #尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间, ...
- IOS_UIButton去掉系统的按下高亮置灰效果
setAdjustsImageWhenHighlighted // default is YES. if YES, image is drawn darker when highlighted(p ...
- Spring(4):Mybatis和Spring整合
第一步:创建数据库 MySQL代码 1 CREATE DATABASE `mybatis` ; 2 3 USE `mybatis`; 4 5 CREATE TABLE `user` ( 6 `id` ...
- 【Linux】【Basis】进程
1. 维基百科:https://zh.wikipedia.org/wiki/%E8%A1%8C%E7%A8%8B 进程的类型: 终端:硬件设备,关联一个用户接口 与终端相关:通过终端启动 与终端无关: ...
- 手写IOC实践
一.IOC 1.什么是IOC? 控制反转(英语:Inversion of Control,缩写为IoC),是[面向对象编程]中的一种设计原则,可以用来减低计算机代码之间的[耦合度]其中最常见的方式叫做 ...
- 对于React各种状态管理器的解读
首先我们要先知道什么是状态管理器,这玩意是干啥的? 当我们在多个页面中使用到了相同的属性时就可以用到状态管理器,将这些状态存到外部的一个单独的文件中,不管在什么时候想使用都可以很方便的获取. reac ...
- 第三届“传智杯”全国大学生IT技能大赛(初赛A组)题解
留念 C - 志愿者 排序..按照题目规则说的排就可以.wa了两发我太菜了qwq #include<bits/stdc++.h> using namespace std; const in ...
- Groovy获取Bean两种方式(奇淫技巧操作)
前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 背景: 在Java代码中当我们需要一个Bean对象,通常会使用spring中@Autowired注解,用来自动装配对象. 在Groovy ...
- 声临其境,轻松几步教你把音频变成3D环绕音
在音乐创作.音视频剪辑和游戏等领域中,给用户带来沉浸式音频体验越来越重要.开发者如何在应用内打造3D环绕声效?华为音频编辑服务6.2.0版本此次带来了空间动态渲染功能,可以将人声.乐器等音频元素渲染到 ...