第四十六个知识点 在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协议并不是完全武断的:人们可以通过几种方式使它们成为零知识,其中最实用的是使它们成为非交互的。但这是下周的话题……

原文地址:https://www.cnblogs.com/zhuowangy2k/p/12246080.html

时间: 2024-11-10 13:16:29

第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么的相关文章

第二十六个知识点:描述NAF标量乘法算法

第二十六个知识点:描述NAF标量乘法算法 NAF标量乘法算法是标量乘法算法的一种增强,该算法使用了非邻接形式(Non-Adjacent Form)表达,减少了算法的期望运行时间.下面是具体细节: 让\(k\)是一个正整数,\(P\)是一个在域\(F_q\)上椭圆曲线\(E\)上的点.这个计算乘法操作\(Q = k * P\)就是圆曲线上的标量乘法操作(点乘).一个最简单计算的方法就是基于双倍-加法的霍纳规则的变体.顾名思义,该方法最突出的两个构建块是点加倍和点添加原语.就像名字那样,算法也十分简

NeHe OpenGL教程 第四十六课:全屏反走样

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第四十六课:全屏反走样 全屏反走样 当今显卡的强大功能,你几乎什么都不用做,只需要在创建窗口的时候该一个数据.看看吧,驱动程序为你做完了一切. 在图形的绘制中,直线的走样是非常影响美观的,我们可以使用反走样解决这个问题.在众多的解决

四十六、android中的Bitmap

四十六.android中的Bitmap: http://www.cnblogs.com/linjiqin/archive/2011/12/28/2304940.html 四十七.实现调用Android手机的拍照功能: http://www.cnblogs.com/linjiqin/archive/2011/12/28/2304970.html

ActionScript3游戏中的图像编程(连载四十六)

总目录:http://blog.csdn.net/iloveas2014/article/details/38304477 3.1.2 以小见大--从细节损失洞悉滤镜本质 把它再改回内斜角,边缘似乎光滑了些,但这种错觉仅仅是由于阴影与蓝色的对比度不够强烈,才会让边缘的粗糙不够显眼.把文字颜色调成浅紫以后,转角处的锯齿依旧一览无余.(图 3.6),而Photoshop应用同样的设置则不会出现同样的问题(图 3.7). 图 3.6 模糊值为3的内侧斜角滤镜 图 3.7 大小等于3的斜面样式 如果认为

QT开发(四十六)——QT数据库编程基础

QT开发(四十六)--QT数据库编程基础 一.Qt SQL模块简介 1.Qt SQL模块简介 QT通过Qt SQL模块提供了对SQL数据库的支持,Qt SQL模块中的API分为三层:驱动层.SQL接口层.用户接口层. 如果要使用Qt SQL模块中的类,需要在工程文件(.pro文件)中添加QT += sql代码. 2.驱动层 驱动层为具体的数据库和SQL接口层之间提供了底层的桥梁,主要类包括Qt SQL模块中的QSqlDriver.QSqlDriverCreator.QSqlDriverCreat

【Unity 3D】学习笔记四十六:输入与控制——键盘事件

在游戏中,玩家控制主角移动,按键攻击,选择行走.都需要在程序中监听玩家的输入.unity为开发者提供了input库,来支持键盘事件,鼠标事件以及触摸事件.本文主要回顾键盘事件,以后会逐文复习鼠标以及触摸事件. 键盘事件 一般的PC键盘有104个不同的按键,在程序中通过监听这些按键事件,从而进一步执行逻辑操作.如:射击游戏中,W表示前进,S表示后退,A表示左移,D表示右移. 按下事件 在脚本中,用input.GetKeyDown( )方法将按键值作为参数,监听此按键是否被按下.按下返回true,否

程序员的奋斗史(四十六)——大学断代史(十)——给学弟学妹们的忠告——终结篇

文/温国兵 「写在前面」 大学断代史终于要完结了,就像一条再长的路总有终点一样.该系列文章前前后后写了一两个月,也该收尾了,至于收尾的文章,想了想,决定写写自己对学弟学妹的忠告.本篇文章以话题的形式呈现. 「关于专业」 我相信大多数的读者在高考填志愿都不知道软件工程或者计算机专业是做啥的,稀里糊涂就踏上了这条IT不归路.身处小乡村,消息相对闭塞,能使用电脑都是奢侈的事情,这就是当初我高考后的境况,相信现在有很大的改变.如果你对IT行业抱有一番热情,恭喜你,选对了好专业,好好学,今后的路错不了.如

“全栈2019”Java多线程第四十六章:判断任意线程是否已持有写锁

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第四十六章:判断任意线程是否已持有写锁 下一章 "全栈2019"Java多线程第四十七章:判断锁是否为公平锁isFair() 学习小组 加入同步学习小组,共同交流与进步. 方式一:加入编程圈子. 方式二:关注头条号Gorhaf,私信"Java学习小组". 方式三:关

第四十六章

第四十六章1 马应该种田,不应该打仗:你应该工作,不应该总想买买买 天下有道,却走马以粪.天下无道,戎马生于郊. 天下有道的时候,马都在田里耕地,天下无道的时候,马都在战场打仗. 要放低欲望,把资源用在正地方. 各位朋友大家好,清晨起来,我们接着来讲<道德经>,看看老子老先生带给我们什么样人生启发.我在今天起床之前做梦,梦是让人黯然神伤的,我做梦梦见自己给一帮孩子妈妈,带着小朋友讲课,就讲这个“道”,结果妈妈不听,在下面聊天,孩子哭闹,乱作一团,大家说讲点感冒吧,讲“道”有什么用,我说“道”很