Definitions
- : percentage of incorrect labels. Currently set to 0.39 (red pebbles)
- Adv: any SP who is able to place more than 3.9% of incorrect labels and still pass the proof
- p = probability to answer a random challenge, currently equal to 0.961
- = security parameter, currently set to 10 (soundness error 2ˆ{-\lambda})
- c = PoRep challenges per layer, currently set to 176
Overview
An adversary passes the verification with probability
Synthetic PoRep protocol introduces an additional step to the current PoRep protocol in order to reduce the buffer between PreCommit
and ProveCommit
.
- A Synthetic Challenge set is generated. This is a set of positions selected at random.
- The 176 PoRep challenges are sampled among the elements of the Synthetic Challenge set, instead of being randomly selected among the nodes of the entire 32GiB layer of the SDR graph.
We do not want to increase the number of challenges (c) or decrease . In order not to lose security we need to analyze how big needs to be.
Technical Analysis
Assume that a Synthetic Challenge set of Synthetic Challenges is generated. The expected number of challenges that can be answered is therefore .
By grinding the adversary can try to come up with a set of challenges with challenges that can be answered.
We consider the target of the adversary being to lower down the security parameter by 1 (1 less bit of security). This means that the adversary aims to pass the verification with probability .
In that case the adversary needs such that (that is )
Given , we take given that .
We want to compute the probability that so that we can compute the grinding effort as .
Given we want grinding to be infeasible we need to be small enough (that is, ).
If is the random variable that counts the Synthetic challenges challenges that the adversary can answer we have that the probability that exactly challenges out of can be answered is the binomial distribution
We want to know how big needs be in order to have
Plugging in numbers in the binomial distribution, we can see that with the inputs
We get .
The calculation above can be checked in a binomial calculator like this.
Note
In the Synthetic PoRep implementation, in order to have the synthetic challenge number to be a power of 2, we pick resulting in . Note: having the synthetic challenge be a power of 2 avoids problem with the modulo reduction when sampling PoRep challenges from the synthetic challenge set.
For the FIP:
## Security Considerations
In the current PoRep protocol if 3.9% or more of nodes in a layer are wrongly encoded by the SP, then the ProveCommit step, where 176 random nodes are checked, will fail with large probability (larger than $1-2^{10}$).
In the new protocol, the SP first samples a set of `N_syn` positions and then proceeds to sample the 176 random nodes from there. In order to be able to keep the same security as before, we need that the distribution of errors in the synthetic challenge set is as close as possible to the original distribution of errors in the layer. However the adversary can try different sets to get one where the fraction of wrongly encoded nodes is smaller than 3.9%. We consider an adversary that wants to pass with probability $2^{-9}$, who then needs a set of synthetic challenges where at least a fraction $q$ are goods (correctly encoded) with $q$ = 0.9651 ($q^{176} ≤ 2^{-9)}$).
We can show that if `N_syn` is large enough, then this is not possible in practice. More in details: the probability that the number of correctly encoded nodes in the sythetic set is larger or equal to $q$`N_syn` is given by the binomial probability:
$$
P = \sum_{i=0}^{qN_{syn}} \binom{N_{syn}}{i}p^i (1-p)^{N_{syn}-i} \text{ with } p ≤ 0.961
$$
and with `N_syn` = $2^{18}$, we have that $P < 2^{-92}$.