Skip to content

Commit 0c3d3e8

Browse files
committed
Renaming S and T
1 parent eb85b24 commit 0c3d3e8

File tree

1 file changed

+40
-40
lines changed

1 file changed

+40
-40
lines changed

report/src/sections/04-Approach.tex

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ \subsection{Springproofs}\label{sec:approach-springproofs}
1414
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.
1515

1616

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.
1919

2020
Springproofs present different scheme functions and prove some of them to be optimal.
2121
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}}$.
2323

2424
\begin{figure}[!htb]
2525
\begin{lstlisting}[language=Python,mathescape=true,label={lst:schemefunc},numbers=right,caption={Scheme function \textbf{\textit{f}} used in CAAUrdleproofs},captionpos=b,frame=single]
@@ -30,10 +30,10 @@ \subsection{Springproofs}\label{sec:approach-springproofs}
3030
$i_h \gets \lfloor (2N-n)/2\rfloor+1$
3131
$i_t=\lfloor n/2\rfloor$
3232
if $n\neq N$: #Not power of 2
33-
$\mathbf{T}\gets\{i_h:i_t\}\cup\{N+1:n\}$
33+
$\mathbf{\mathcal{T}}\gets\{i_h:i_t\}\cup\{N+1:n\}$
3434
else if $n=N$: #Power of 2
35-
$\mathbf{T}\gets\{1:n\}$ #Meaning S is empty
36-
$\mathbf{S}\gets\mathbf{n}-\mathbf{T}$
35+
$\mathbf{\mathcal{T}}\gets\{1:n\}$ #Meaning S is empty
36+
$\mathbf{\mathcal{S}}\gets\mathbf{n}-\mathbf{\mathcal{T}}$
3737
\end{lstlisting}
3838
\label{fig:schemefunc}
3939
\end{figure}
@@ -80,12 +80,12 @@ \subsubsection*{Prover computation}
8080
$\textbf{Step 2:}$ #Recursive protocol
8181
$m\gets \lceil \log n\rceil$
8282
while $1\leq j\leq m:$
83-
$\mathbf{T},\mathbf{S}\gets \textbf{\textit{f(}}n\textbf{\textit{)}}$ #Scheme function
84-
$n\gets \frac{|\mathbf{T}|}{2}$
85-
$\textbf{c}\gets\textbf{c}_\mathbf{T}$, $\textbf{cS}\gets\textbf{c}_\mathbf{S}$ #Vector splitting
86-
$\textbf{d}\gets\textbf{d}_\mathbf{T}$, $\textbf{dS}\gets\textbf{d}_\mathbf{S}$
87-
$\textbf{G}\gets\textbf{G}_\mathbf{T}$, $\textbf{GS}\gets\textbf{G}_\mathbf{S}$
88-
$\textbf{G}'\gets\textbf{G}'_\mathbf{T}$, $\textbf{GS}'\gets\textbf{G}'_\mathbf{S}$
83+
$\mathbf{\mathcal{T}},\mathbf{\mathcal{S}}\gets \textbf{\textit{f(}}n\textbf{\textit{)}}$ #Scheme function
84+
$n\gets \frac{|\mathbf{\mathcal{T}}|}{2}$
85+
$\textbf{c}\gets\textbf{c}_\mathbf{\mathcal{T}}$, $\textbf{cS}\gets\textbf{c}_\mathbf{\mathcal{S}}$ #Vector splitting
86+
$\textbf{d}\gets\textbf{d}_\mathbf{\mathcal{T}}$, $\textbf{dS}\gets\textbf{d}_\mathbf{\mathcal{S}}$
87+
$\textbf{G}\gets\textbf{G}_\mathbf{\mathcal{T}}$, $\textbf{GS}\gets\textbf{G}_\mathbf{\mathcal{S}}$
88+
$\textbf{G}'\gets\textbf{G}'_\mathbf{\mathcal{T}}$, $\textbf{GS}'\gets\textbf{G}'_\mathbf{\mathcal{S}}$
8989
$L_{C,j}\gets\textbf{c}_{[:n]}\times\textbf{G}_{[n:]}+(\textbf{c}_{[:n]}\times\textbf{d}_{[n:]})H$ #Cross-comm
9090
$L_{D,j}\gets\textbf{d}_{[n:]}\times\textbf{G}'_{[:n]}$
9191
$R_{C,j}\gets\textbf{c}_{[n:]}\times\textbf{G}_{[:n]}+(\textbf{c}_{[n:]}\times\textbf{d}_{[:n]})H$
@@ -123,15 +123,15 @@ \subsubsection*{Prover computation}
123123

124124
Now, the recursive proof construction, and step 2, begins.
125125
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}}$.
128128

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.
130130
These are added to the proof on line 25, which eventually is available to the verifier.
131131
They are also used to construct a hash value,~$\gamma_j$, in the next step on line 26.
132132

133133
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.
135135
The figure shows a concatenation, but it is important to know that the vectors are appended together as shown in~\autoref{fig:fold}(b).
136136

137137
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.
@@ -162,10 +162,10 @@ \subsubsection*{Verifier computation}
162162
$\textbf{Step 2:}$ #Recursive round
163163
$m\gets \lceil\log n\rceil$
164164
for $1\leq j\leq m$
165-
$\mathbf{T},\mathbf{S}\gets \textbf{\textit{f(}}n\textbf{\textit{)}}$ #Scheme function
166-
$n\gets \frac{|\mathbf{T}|}{2}$
167-
$\textbf{G}=\textbf{G}_\mathbf{T}$, $\textbf{GS}=\textbf{G}_\mathbf{S}$ #Vector splitting
168-
$\textbf{G}'=\textbf{G}'_\mathbf{T}$, $\textbf{GS}'=\textbf{G}'_\mathbf{S}$
165+
$\mathbf{\mathcal{T}},\mathbf{\mathcal{S}}\gets \textbf{\textit{f(}}n\textbf{\textit{)}}$ #Scheme function
166+
$n\gets \frac{|\mathbf{\mathcal{T}}|}{2}$
167+
$\textbf{G}=\textbf{G}_\mathbf{\mathcal{T}}$, $\textbf{GS}=\textbf{G}_\mathbf{\mathcal{S}}$ #Vector splitting
168+
$\textbf{G}'=\textbf{G}'_\mathbf{\mathcal{T}}$, $\textbf{GS}'=\textbf{G}'_\mathbf{\mathcal{S}}$
169169
$(L_{C,j},L_{D,j},R_{C,j},R_{D,j})\gets$parse$(\pi_j)$ #Proof elem
170170
$\gamma_j\gets$Hash$(\pi_j)$ #Folding challenges
171171
$C\gets\gamma_j L_{C,j}+C+\gamma_j^{-1}R_{C,j}$ #Update comms
@@ -196,8 +196,8 @@ \subsubsection*{Verifier computation}
196196
Those modifications mean that the commitments~$C$ and~$D$ need to be commitments to the modified witnesses instead.
197197

198198
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}}$.
201201

202202
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}$.
203203
These are used for constructing a new commitment, lines 19--20, according to the fold made at round $i$.
@@ -235,25 +235,25 @@ \subsection{Shuffle security}\label{subsec:approach-shuffle-security}
235235
\rule{\linewidth}{0.4pt}
236236

237237
\noindent
238-
\textbf{For} $t \in [T]$ \textbf{:}
238+
\textbf{For} $q \in [Q]$ \textbf{:}
239239
\begin{itemize}
240-
\item[$S_t$] picks random $\{i_1, \ldots, i_\ell\} \subset [n]$
241-
\item[$S_t$] computes $(\tilde{c}_{i_1}, \ldots, \tilde{c}_{i_\ell}) \leftarrow \text{Shuffle}(c_{i_1}, \ldots, c_{i_\ell})$
242-
\item[$S_t$] publishes $(\tilde{c}_{i_1}, \ldots, \tilde{c}_{i_\ell})$
240+
\item[$S_q$] picks random $\{i_1, \ldots, i_\ell\} \subset [n]$
241+
\item[$S_q$] computes $(\tilde{c}_{i_1}, \ldots, \tilde{c}_{i_\ell}) \leftarrow \text{Shuffle}(c_{i_1}, \ldots, c_{i_\ell})$
242+
\item[$S_q$] publishes $(\tilde{c}_{i_1}, \ldots, \tilde{c}_{i_\ell})$
243243
\end{itemize}
244244
\end{framed}
245245
\caption{Distributed shuffling protocol. Source:~\cite{cryptoeprint:2022/560}}
246246
\label{fig:shuffle}
247247
\end{figure}
248248

249-
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.
251251
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.
254254
An adversary can choose to do anything with its shuffle, including not shuffling.
255255
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.
257257

258258
The adversary can also track ciphertexts.
259259
For instance, if the adversary owns some of the ciphertexts.
@@ -267,12 +267,12 @@ \subsection{Shuffle security}\label{subsec:approach-shuffle-security}
267267
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.
268268

269269
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 \geq 20 n / \ell \ln(n/\delta) + \beta $ and $ \ell \geq 256 \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 \geq 20 n / \ell \ln(n/\delta) + \beta $ and $ \ell \geq 256 \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)$.
272272

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$.
274274
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.
276276

277277

278278
\subsection{Implementation}\label{subsec:approach-implementation}
@@ -311,11 +311,11 @@ \subsubsection{CAAUrdleproofs}
311311
$\textbf{Step 2:}$ #Recursive phase
312312
$m\gets \lceil\log n\rceil$
313313
for $1\leq j\leq m$
314-
$\mathbf{T},\mathbf{S}\gets \textbf{\textit{f(}}n\textbf{\textit{)}}$ #Scheme function
315-
$n\gets \frac{|\mathbf{T}|}{2}$
314+
$\mathbf{\mathcal{T}},\mathbf{\mathcal{S}}\gets \textbf{\textit{f(}}n\textbf{\textit{)}}$ #Scheme function
315+
$n\gets \frac{|\mathbf{\mathcal{T}}|}{2}$
316316
$(L_{C,j},L_{D,j},R_{C,j},R_{D,j})\gets$parse$(\pi_j)$ #Proof elem
317317
$\gamma_j\gets$Hash$(\pi_j)$ #Folding challenges
318-
$n\gets n+|\mathbf{S}|$
318+
$n\gets n+|\mathbf{\mathcal{S}}|$
319319

320320
$\textbf{Step 3:}$ # Accumulated checking phase
321321
$\mathbf{CP}\text{: }\mathbf{\delta}\gets(\gamma_m,...,\gamma_1)$ #Construction difference
@@ -366,9 +366,9 @@ \subsubsection{CAAUrdleproofs}
366366

367367
In Curdleproofs, both the~\gls{sameperm} and~\gls{samemsm} proof are recursive~\glspl{ipa}.
368368
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.
370370

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.
372372
Instead of concatenating, the computation uses pointers to the original vector, so it never practically concatenates.
373373

374374
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

Comments
 (0)