第 3 课 练习
给定整数
英文原文
Given integers
二次非剩余 Quadratic nonresidue
假定:证明者可以为所有
公共输入:正整数
目标:证明者想要说服验证者
协议
Verifier 在与
互质的元素中均匀地随机选取一个 ,同时抛硬币 。 设 Verifier 将
发送给 Prover 并挑战 Prover 以确定 。 Prover 计算
并将其值发送回 Verifier 如果 Verifier 从 Prover 收到的值确实等于
,则 Verifier 接受; 否则它拒绝。
您需要检查:
(a) 完备性:如果
并且双方都按照协议行事,那么验证者总是接受。 (b) 可靠性:如果
,那么无论 Prover 做什么(Prover 不必遵循协议),Verifer 都会以 的概率拒绝
英文原文
ASSUMPTION: The Prover can compute
COMMON INPUT: positive integers
GOAL: the Prover wants to convince the Verifer that
PROTOCOL
- The Verifier picks a random
uniformly among elements relatively prime to , and also tosses a coin . Set
The Verifier sends
The Prover computes
and sends its value back to the Verifier The Verifier accepts if the value it received from the Prover is indeed equal to
; otherwise it rejects.
You are asked to check:
(a) Completeness: if
and both parties behave according to the protocol, then the Verifier always accepts. (b) Soundness: if
, then no matter what the Prover does (the Prover does not have to follow the protocol), the Verifer rejects with probability
二次剩余 Quadratic residue
公共输入:正整数
私有输入:证明者知道一个秘密整数
目标:证明者想要说服验证者
(请注意,证明者可以通过向验证者发送
协议
Prover 在与
互质的剩余中随机选择一个均匀的 。 Prover 将 发送给 Verifier。 Verifier 抛硬币
并将 发送给 Prover。 Prover 收到
并将 值发送给 Verifier 验证者接受证明如果
否则拒绝。
您需要检查:
(a) 完备性:如果双方都按照协议行事,那么 Verifier 总是接受。
(b) 可靠性:如果
(特别是,Prover 不知道任何有效的 ),那么无论 Prover 做什么,Verifier 都以 的几率拒绝。 (b*) 知识可靠性:对于任何使得Verifier接受的证明算法,如果允许Verifier同时查询
的两个值(对于 相同的 ),则 Verifier 可以从 Prover 中提取秘密 。 (这里的重点是除非证明者“知道” ,否则证明者无法说服验证者。) (c) 零知识:无论验证者做什么(验证者的行为可能与协议不同),验证者都可以在不与证明者交互的情况下自行模拟整个交互,这样如果验证者接受,那么记录下来的信息与实际交互几乎不可区分。
提示:想象模拟器自己生成一个随机的
而不是从 Prover 获取 。 (这部分有点棘手,因为允许对抗性验证器的行为与协议不同 - 请记住我们试图展示的是,无论验证器做什么,它都不会从证明者那里学到关于
的信息 验证者不可能简单地自行生成。如果您想查看解决方案,请参阅 Barak 笔记中的定理 13.6 的证明。)
英文原文
COMMON INPUT: positive integers
PRIVATE INPUT: the Prover knows a secret integer
GOAL: the Prover wants to convince the Verifier that
(Note that the Prover can easily convince the Verifier that
PROTOCOL
The Prover picks a random
uniform among residues relatively prime to . The Prover sends to the Verifier. The Verifier flips a coin
and sends to the Prover. The Prover receives
and sends to the Verifier the value of The Verifier accepts if
and rejects otherwise.
You are asked to check:
(a) Completeness: If both parties behaves according to the protocol, then the Verifier always accepts.
(b) Soundness: If
(in particular, the Prover does not know any valid ), then no matter what the Prover does, the Verifer rejects with probability . (b*) Knowledge soundness: For any Prover algorithm that leads the Verifier to accept, if the Verifier is allowed to simultaneously query both values of
(for the same ), then the Verifer can extract the secret from the Prover. (The point here is that the Prover cannot convince the Verifier unless the Prover "knows" .) (c) Zero knowledge: No matter what the Verifier does (the Verifier could behave differently from the Protocol), the Verifier could have simulated the entire interaction on its own without interacting with the Prover and such that if the Verifier accepts, then the transcript is indistinguishable from the actual interaction.
Hint: imagine that the simulator generates a random
on its own instead of getting from the Prover. (This part is a little tricky, since the adversarial Verifier is allowed to behave differently from the protocol - remember what we are trying to show is that no matter what the Verifier does, it learns no information about
from the Prover that the Verifier could not have simply generated on its own. See the proof of Theorem 13.6 in Barak's notes if you want to see the solution.)
双线性自映射意味着DDH的失效 Self-pairing implies failure of DDH
设
给出一个有效的决策算法,给定
提示:计算与
此练习表明确定性 Diffie-Hellman (DDH) 假设对于双线性自映射是错误的。
英文原文
Let
Give an efficient algorithm for deciding, given
Hint: compute the pairing against
This exercise shows that the Decisional Diffie-Hellman (DDH) assumption is false for groups with self-pairing.
BLS 签名聚合 BLS signature aggregation
设置
映射 Pairing
,其中 是素数阶 的阿贝尔群(以加法写出),生成元分别是 哈希函数
在 中取值
BLS签名方案定义为:
: 选择随机(私钥) 并设置(公钥) : 输出 作为消息 上的签名 :如果 ,则接受。
检查验证算法是否始终能接受正确签名。 还争辩说,如果给伪造者的是
请检查验证算法是否总是接受正确的签名。并论证:在给定
签名聚合。 给定三元组
给定
注意:由于 恶意公钥攻击 ,上述签名聚合方案不安全。 使方案安全的一种方法是确保所有消息
有关 BLS 签名聚合的更多信息,请参阅 https://crypto.stanford.edu/~dabo/pubs/papers/BLSmultisig.html
英文原文
SETUP
Pairing
, where are abelian groups (written additively) of prime order , with generators respectively Hash function
taking values in
The BLS signature scheme is defined as:
: choose random (secret key) and set (public key) : output as the signature on the message : accept if .
Check that the verification algorithm always accepts a correctly signed signature. Also argue that it is computational infeasible to come up with a forged signature
Signature aggregation. Given triples
Given
Note. The above signature aggregation scheme is not secure due to a rogue public key attack. One way to make the scheme secure is to ensure that all messages
For more on BLS signature aggregation, see https://crypto.stanford.edu/~dabo/pubs/papers/BLSmultisig.html