You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In a general~\gls{ipa}, Curdleproofs included, if the size of the vectors were not a power of two, the argument would not recurse down to size 1, as they work by halving the vectors every recursive round.
15
15
16
16
17
-
The core concept of the Springproofs scheme function is to split the vectors into sets, $T$ and $S$, before each recursive round of the protocol.
18
-
Then, the fold for that round is only done on one of the two sets,~$T$, before the other set,~$S$, is appended again at the end of the recursive round.
17
+
The core concept of the Springproofs scheme function is to split the vectors into sets, $\mathbf{\mathcal{T}}$ and $\mathbf{\mathcal{S}}$, before each recursive round of the protocol.
18
+
Then, the fold for that round is only done on one of the two sets,~$\mathbf{\mathcal{T}}$, before the other set,~$\mathbf{\mathcal{S}}$, is appended again at the end of the recursive round.
19
19
20
20
Springproofs present different scheme functions and prove some of them to be optimal.
21
21
One of these optimal functions is an optimized version of their \textit{pre-compression method}, which splits the vectors as seen in~\autoref{lst:schemefunc}.
22
-
The computation is for finding the set,~$T$.
22
+
The computation is for finding the set,~$\mathbf{\mathcal{T}}$.
23
23
24
24
\begin{figure}[!htb]
25
25
\begin{lstlisting}[language=Python,mathescape=true,label={lst:schemefunc},numbers=right,caption={Scheme function \textbf{\textit{f}} used in CAAUrdleproofs},captionpos=b,frame=single]
Now, the recursive proof construction, and step 2, begins.
125
125
As explained, at the start of the recursive round, line 14, we find the split of the vectors on line 15, with $f(n)$ being the scheme function from~\autoref{lst:schemefunc}.
126
-
Then, on line 16, we find half the length of the $T$ set, as it is the set we are doing the recursive folding round on.
127
-
Equally, on lines 17--20, we split our witness vectors and the group vectors using $T$ and $S$.
126
+
Then, on line 16, we find half the length of the $\mathbf{\mathcal{T}}$ set, as it is the set we are doing the recursive folding round on.
127
+
Equally, on lines 17--20, we split our witness vectors and the group vectors using $\mathbf{\mathcal{T}}$ and $\mathbf{\mathcal{S}}$.
128
128
129
-
After this, the prover constructs cross-commitment elements on lines 21--24 that are computed on the $T$ set.
129
+
After this, the prover constructs cross-commitment elements on lines 21--24 that are computed on the $\mathbf{\mathcal{T}}$ set.
130
130
These are added to the proof on line 25, which eventually is available to the verifier.
131
131
They are also used to construct a hash value,~$\gamma_j$, in the next step on line 26.
132
132
133
133
This value is used on lines 27--30 for completing the folding of $\mathbf{c},\mathbf{d},\mathbf{G},\mathbf{G'}$.
134
-
We do the fold as in the original Curdleproofs protocol while also appending the elements of $S$ back onto the vectors.
134
+
We do the fold as in the original Curdleproofs protocol while also appending the elements of $\mathbf{\mathcal{S}}$ back onto the vectors.
135
135
The figure shows a concatenation, but it is important to know that the vectors are appended together as shown in~\autoref{fig:fold}(b).
136
136
137
137
At the end of the recursive round, on line 31,~$n$ is updated to the length of the concatenated vectors before starting a new round.
Those modifications mean that the commitments~$C$ and~$D$ need to be commitments to the modified witnesses instead.
197
197
198
198
The setup phase is now complete, and the verifier then executes the recursive protocol, as shown in step 2.
199
-
First, the vectors are divided into two sets,~$T$ and $S$, on line 13, as in~\autoref{lst:ipa-prover}.
200
-
After this, the group vectors are in lines 14--16 split according to those sets, along with updating~$n$ to be half the size of~$T$.
199
+
First, the vectors are divided into two sets,~$\mathbf{\mathcal{T}}$ and $\mathbf{\mathcal{S}}$, on line 13, as in~\autoref{lst:ipa-prover}.
200
+
After this, the group vectors are in lines 14--16 split according to those sets, along with updating~$n$ to be half the size of~$\mathbf{\mathcal{T}}$.
201
201
202
202
The verifier then, on line 17, retrieves from the proof the cross-product commitment update values for the given round,~$L_{C,j},L_{D,j},R_{C,j},R_{D,j}$.
203
203
These are used for constructing a new commitment, lines 19--20, according to the fold made at round $i$.
Here the set $(c_1, \ldots, c_n)$ is a set of ciphertexts that are shuffled over $T$ slots.
250
-
In each slot $t$, a subset of the ciphertexts ${i_1, \ldots, i_\ell}$ is chosen randomly, shuffled and added back to the list of ciphertexts.
249
+
Here the set $(c_1, \ldots, c_n)$ is a set of ciphertexts that are shuffled over $Q$ slots.
250
+
In each slot $q$, a subset of the ciphertexts ${i_1, \ldots, i_\ell}$ is chosen randomly, shuffled and added back to the list of ciphertexts.
251
251
The shuffler then re-encrypts the ciphertexts and publishes them.
252
-
This process is repeated for $T$ slots, and the shuffle is complete.
253
-
During the $T$ shuffles, some shuffles may be adversarial.
252
+
This process is repeated for $Q$ slots, and the shuffle is complete.
253
+
During the $Q$ shuffles, some shuffles may be adversarial.
254
254
An adversary can choose to do anything with its shuffle, including not shuffling.
255
255
Hence, an adversarial shuffle can be seen as no shuffling being done.
256
-
Therefore, the number of honest shuffles that happen during the shuffle process is $T_H = T - \beta$, where $\beta$ is the number of adversarial shuffles.
256
+
Therefore, the number of honest shuffles that happen during the shuffle process is $Q_H = Q - \beta$, where $\beta$ is the number of adversarial shuffles.
257
257
258
258
The adversary can also track ciphertexts.
259
259
For instance, if the adversary owns some of the ciphertexts.
So, if a shuffle contains many ciphertexts with a larger-than-average chance of containing a specific ciphertext, then that would imply that there is a higher chance of that ciphertext being in that slot.
268
268
269
269
It is theoretically possible to find a number of shuffles, given a shuffle size and a number of adversarial shufflers, which guarantees that the shuffle is secure.
270
-
For any $0 < \delta < 1/3$, if $T\geq20 n / \ell\ln(n/\delta) + \beta$ and $\ell\geq256\ln^2(n/\delta)(1 - \alpha/n)^{-2}$.
271
-
If $T$ and $\ell$ are chosen such that the above two conditions are met, then the protocol is an $(\epsilon , \delta)$-secure $(T,n,\ell)$-shuffle in the presence of a $(\alpha, \beta)$-adversary where $\epsilon = 2/(n-\alpha)$.
270
+
For any $0 < \delta < 1/3$, if $Q\geq20 n / \ell\ln(n/\delta) + \beta$ and $\ell\geq256\ln^2(n/\delta)(1 - \alpha/n)^{-2}$.
271
+
If $Q$ and $\ell$ are chosen such that the above two conditions are met, then the protocol is an $(\epsilon , \delta)$-secure $(Q,n,\ell)$-shuffle in the presence of a $(\alpha, \beta)$-adversary where $\epsilon = 2/(n-\alpha)$.
272
272
273
-
This formula is the lowest theoretically proven bound for $T$ and $\ell$.
273
+
This formula is the lowest theoretically proven bound for $Q$ and $\ell$.
274
274
Plotting numbers relevant to Whisk will show that this theoretical bound is too large to use for argumentation of security.
275
-
It is, however, possible to find lower secure values for $T$ and $\ell$, but this has to be done experimentally.
275
+
It is, however, possible to find lower secure values for $Q$ and $\ell$, but this has to be done experimentally.
In Curdleproofs, both the~\gls{sameperm} and~\gls{samemsm} proof are recursive~\glspl{ipa}.
368
368
So, the modifications and optimization used on the~\gls{sameperm} argument are also used on the~\gls{samemsm} argument.
369
-
The modifications include the split into set $T$ and $S$ before recursion and the construction of the bit matrix,~$b_{i,j}$, to keep track of multiplications on individual elements.
369
+
The modifications include the split into set $\mathbf{\mathcal{T}}$ and $\mathbf{\mathcal{S}}$ before recursion and the construction of the bit matrix,~$b_{i,j}$, to keep track of multiplications on individual elements.
370
370
371
-
It is also worth noting that the concatenation of $T$ and $S$ in the recursive phase, lines 26--29 in~\autoref{lst:ipa-prover}, is handled effectively in the code.
371
+
It is also worth noting that the concatenation of $\mathbf{\mathcal{T}}$ and $\mathbf{\mathcal{S}}$ in the recursive phase, lines 26--29 in~\autoref{lst:ipa-prover}, is handled effectively in the code.
372
372
Instead of concatenating, the computation uses pointers to the original vector, so it never practically concatenates.
373
373
374
374
The code also uses the fact that the used scheme function will always end up with vectors being a power of two after the first round.
0 commit comments