1. Fiat-Shamir 定义

通过Fiat-Shamir转换,可将Bulletproof中Verifier多次challenge的interactive证明切换为Non-Interactive proof.

The Fiat-Shamir heuristic. The Fiat-Shamir transformation takes an interactive public coin argument and replaces the challenges with the output of a cryptographic hash function. The idea is that the hash function will produce random looking output and therefore be a suitable replacement for the verifier.
The Fiat-Shamir heuristic yields a non-interactive zero-knowledge argument in the random oracle model [BR93].
The transformation can be applied to our arguments to make them noninteractive at the cost of using the random oracle model in the security proofs. From an efficiency point of view this is especially useful for the arguments in Sections 4 and 5.2, reducing a logarithmic number of moves to a single one.

2. random oracle定义

In cryptography, a random oracle is an oracle (a theoretical black box) that responds to every unique query with a (truly) random response chosen uniformly from its output domain. If a query is repeated it responds the same way every time that query is submitted.

Stated differently, a random oracle is a mathematical function chosen uniformly at random, that is, a function mapping each possible query to a (fixed) random response from its output domain.

Random oracles as a mathematical abstraction were firstly used in rigorous cryptographic proofs in the 1993 publication by Mihir Bellare and Phillip Rogaway (1993).[1] They are typically used when the proof cannot be carried out using weaker assumptions on the cryptographic hash function. A system that is proven secure when every hash function is replaced by a random oracle is described as being secure in the random oracle model, as opposed to secure in the standard model of cryptography.

Random oracles are typically used as an ideal replacement for cryptographic hash functions in schemes where strong randomness assumptions are needed of the hash function’s output. Such a proof generally shows[example needed] that a system or a protocol is secure by showing that an attacker must require impossible behavior from the oracle, or solve some mathematical problem believed hard in order to break it.

Not all uses of cryptographic hash functions require random oracles: schemes that require only one or more properties having a definition in the standard model (such as collision resistance, preimage resistance, second preimage resistance, etc.) can often be proven secure in the standard model (e.g., the Cramer–Shoup cryptosystem).

3. Fiat-Shamir的实现

根据https://merlin.cool/problem.html:
The Fiat-Shamir heuristic provides a way to transform a (public-coin) interactive argument into a non-interactive argument. Intuitively, the idea is to replace a verifier’s random challenges with a hash of the prover’s prior messages, but the exact details are usually unspecified.
也就是说,实际实现时,不同的实现方式可能存在安全漏洞,如论文《How not to Prove Yourself: Pitfalls of the Fiat-Shamir Heuristic and Applications to Helios》指出在IACR elections中所使用的Helios protocol 具有安全漏洞,论文《How not to prove your election outcome》中指出的在SwissPost/Scytl e-voting system中存在的伪造证明可通过验证问题。

https://github.com/dalek-cryptography/merlin声称所做的Fiat-Shamir实现可解决以上两篇论文中提及的问题。

参考资料:
[1] 论文《Efficient Zero-Knowledge Arguments for Arithmetic Circuits in the Discrete Log Setting》
[2] https://en.wikipedia.org/wiki/Random_oracle
[3] 论文《How not to Prove Yourself: Pitfalls of the Fiat-Shamir Heuristic and Applications to Helios》
[4] 论文《How not to prove your election outcome》

Fiat-Shamir heuristic(含实现)和Random oracle相关推荐

  1. Fiat–Shamir heuristic 启发式的应用 理解 代码实现

    更多技术内容可关注本人知乎专栏: 区块链技术最前沿https://zhuanlan.zhihu.com/blockchain-top-paper 先讲问题,再引入Fiat–Shamir heurist ...

  2. oracle 入参含多个值,oracle几个检查点参数的含义与区别

    关于FAST_START_IO_START.LOG_CHECKPOINT_INTERVAL.LOG_CHECKPOINT_TIMEOUT这三者的区别, 首先明确几个概念: 1.Data block 是 ...

  3. java+random+oracle,oracle随机数 — dbms_random

    oracle随机数 - dbms_random ORACLE的PL/SQL提供了生成随机数和随机字符串的多种方式,罗列如下: 1.小数( 0 ~ 1) select dbms_random.value ...

  4. 随机预言机(random oracle)和PRF(Pseudorandom Function)是什么,区别在哪里?

  5. Efficient Zero-Knowledge Argument for Correctness of a Shuffle学习笔记(3)

    1. 前言 在博客 Efficient Zero-Knowledge Argument for Correctness of a Shuffle学习笔记(1)中介绍了Shuffle argument总 ...

  6. STARKs, Part I: 多项式证明

    相信很多人都听过 ZK-SNARKS,一个通用而简洁的零知识证明技术,从可验证计算到需要隐私保护的加密货币,它可以被应用于各类场景.不过,可能你还不知道现在 ZK-SNARKs 有了一个新兄弟:ZK- ...

  7. Fast Reed-Solomon Interactive Oracle Proofs of Proximity学习笔记

    1. 引言 Eli Ben-Sasson等人2018年论文<Fast Reed-Solomon Interactive Oracle Proofs of Proximity>.该论文又俗称 ...

  8. oracle解密des乱码,Oracle中des等算法的加解密

    1.oracle中加密function CREATE OR REPLACE FUNCTION ENCRYPT_FUNCTION( V_STR VARCHAR2, V_KEY VARCHAR2) RET ...

  9. oracle dbms_crypto,Oracle的dbms_obfuscation_toolkit加密解密数据

    oracle从8i开始提供一个数据加密包:dbms_obfuscation_toolkit.利用这个包,我们可以对数据进行DES,Triple DES或者MD5加密. 本文就此讲解如何使用以及使用过程 ...

最新文章

  1. 作为程序员,要取得非凡成就需要记住的15件事。
  2. win10电脑去掉快捷箭头_【搞机作战室】Win10系统电脑 常用快捷方式按键 (快捷键)介绍...
  3. Oracle 块修改跟踪 (Block Change Tracking) 说明
  4. Linux YUM扩展NFS共享存储服务(配置图解)
  5. 万能门店小程序_超市门店微信小程序注册流程
  6. linux中显示目录名,在linux下显示中文目录和文件名
  7. OllyDbg笔记-寄存器以及各种关键指令解析(含简单程序破解)
  8. IndexedQueueT——C#中的自定义队列
  9. 济群法师:《大乘百法明门论》讲记·视频·音频·MP3
  10. idea 社区教育版需要安装的插件
  11. 插值算法(最邻近差值、双线性插值、双三次插值)
  12. java 闰年闰月_闰年闰月查询表
  13. 2018 10 12 校内模拟 字符串模拟+平面距离+线段树
  14. LeetCode-171. Excel 表列序号(java)
  15. 九 iOS之 图片剪裁
  16. 仿朋友圈图片查看功能
  17. python的打开方式有哪些_python中打开程序的方式有哪些
  18. Java 枚举异常的类型
  19. halcon基于形状的模板匹配第三例:rectify_result.hdev
  20. 使用Hook拦截sendto函数解决虚拟局域网部分游戏联机找不到房间的问题——以文明6为例

热门文章

  1. Lua程序设计读书 随笔
  2. linux 内核调试 booting the kernel.,Uncompressing Linux....... done, booting the kernel就不动了的一个可能原因...
  3. 解决vagrant up启动失败,停留在Booting VM...过程的方法
  4. linu修改open files无效_雷电模拟器修改教程
  5. 浏览器和服务器的区别
  6. UG二次开发-加工篇:获取刀具的直径,总长,刃长等
  7. MP3音频编解码芯片 VS1053B-L
  8. 在线笔试神器~福利哟
  9. 安卓Apk安装过程,社招面试心得
  10. jupter 使用