You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

309 lines
11 KiB

  1. \documentclass{article}
  2. \usepackage[utf8]{inputenc}
  3. \usepackage{amsfonts}
  4. \usepackage{amsthm}
  5. \usepackage{amsmath}
  6. \usepackage{mathtools}
  7. \usepackage{enumerate}
  8. \usepackage{hyperref}
  9. \usepackage{xcolor}
  10. % \usepackage{pgf-umlsd} % diagrams
  11. % prevent warnings of underfull \hbox:
  12. \usepackage{etoolbox}
  13. \apptocmd{\sloppy}{\hbadness 4000\relax}{}{}
  14. \theoremstyle{definition}
  15. \newtheorem{definition}{Def}[section]
  16. \newtheorem{theorem}[definition]{Thm}
  17. % custom lemma environment to set custom numbers
  18. \newtheorem{innerlemma}{Lemma}
  19. \newenvironment{lemma}[1]
  20. {\renewcommand\theinnerlemma{#1}\innerlemma}
  21. {\endinnerlemma}
  22. \title{Notes on FRI}
  23. \author{arnaucube}
  24. \date{February 2023}
  25. \begin{document}
  26. \maketitle
  27. \begin{abstract}
  28. Notes taken from \href{https://sites.google.com/site/vincenzoiovinoit/}{Vincenzo Iovino} \cite{vincenzoiovino} explanations about FRI \cite{fri}, \cite{cryptoeprint:2022/1216}, \cite{cryptoeprint:2019/1020}.
  29. These notes are for self-consumption, are not complete, don't include all the steps neither all the proofs.
  30. An implementation of FRI can be found at\\ \href{https://github.com/arnaucube/fri-commitment}{https://github.com/arnaucube/fri-commitment} \cite{fri-impl}.
  31. \end{abstract}
  32. \tableofcontents
  33. \section{Preliminaries}
  34. \subsection{General degree d test}
  35. Query at points $\{ x_i \}_0^{d+1},~z$ (with rand $z \overset{R}{\in} \mathbb{F}$).
  36. Interpolate $p(x)$ at $\{f(x_i)\}_0^{d+1}$ to reconstruct the unique polynomial $p$ of degree $d$ such that $p(x_i)=f(x_i)~\forall i=1, \ldots, d+1$.
  37. V checks $p(z)=f(z)$, if the check passes, then V is convinced with high probability.
  38. This needs $d+2$ queries, is linear, $\mathcal{O}(n)$. With FRI we will have the test in $\mathcal{O}(\log{}d)$.
  39. \section{FRI protocol}
  40. Allows to test if a function $f$ is a poly of degree $\leq d$ in $\mathcal{O}(\log{}d)$.
  41. Note: "P \emph{sends} $f(x)$ to V", "\emph{sends}", in the ideal IOP model means that all the table of $f(x)$ is sent, in practice is sent a commitment to $f(x)$.
  42. \subsection{Intuition}
  43. V wants to check that two functions $g,~h$ are both polynomials of degree $\leq d$.
  44. Consider the following protocol:
  45. \begin{enumerate}
  46. \item V sends $\alpha \in \mathbb{F}$ to P. P sends $f(x) = g(x) + \alpha h(x)$ to V.
  47. \item P sends $f(x)=g(x) + \alpha h(x)$ to V.
  48. \item V queries $f(r), ~g(r), ~h(r)$ for rand $r \in \mathbb{F}$.
  49. \item V checks $f(r)=g(r) + \alpha h(r)$. (Schwartz-Zippel lema).
  50. If holds, V can be certain that $f(x)=g(x)+ \alpha h(x)$.
  51. \item P proves that $deg(f) \leq d$.
  52. \item If V is convinced that $deg(f) \leq d$, V believes that both $g, h$ have $deg \leq d$.
  53. \end{enumerate}
  54. %/// TODO tabulate this next lines
  55. With high probablility, $\alpha$ will not cancel the coeffs with $deg \geq d+1$. % TODO check which is the name of this theorem or why this is true
  56. Let $g(x)=a \cdot x^{d+1}, ~~ h(x)=b \cdot x^{d+1}$, and set $f(x) = g(x) + \alpha h(x)$.
  57. Imagine that P can chose $\alpha$ such that $a x^{d+1} + \alpha \cdot b x^{d+1} = 0$, then, in $f(x)$ the coefficients of degree $d+1$ would cancel.
  58. %///
  59. \quad
  60. Here, P proves $g,~h$ both have $deg \leq d$, but instead of doing $2 \cdot (d+2)$ queries ($d+2$ for $g$, and $d+2$ for $h$), it is done in $d+2$ queries (for $f$).
  61. So we halved the number of queries.
  62. \subsection{FRI-LDT}\label{sec:fri-ldt}
  63. FRI low degree testing.\\
  64. Both P and V have oracle access to function $f$.
  65. V wants to test if $f$ is polynomial with $deg(f) \leq d$.
  66. Let $f_0(x)=f(x)$.
  67. Each polynomial $f(x)$ of degree that is a power of $2$, can be written as
  68. $$f(x) = f^L(x^2) + x f^R(x^2)$$
  69. for some polynomials $f^L,~f^R$ of degree $\frac{deg(f)}{2}$, each one containing the even and odd degree coefficients as follows:
  70. % $f^L(x)$ is built from the even degree coefficients divided by $x$, and $f^R(x)$ from the odd degree coefficients divided by $x$.
  71. $$f^L(x)= \sum_0^{\frac{d+1}{2}-1} c_{2i} x^i ,~~ f^R(x)= \sum_0^{\frac{d+1}{2}-1} c_{2i+1} x^i$$
  72. eg. for $f(x)=x^4+x^3+x^2+x+1$,
  73. \begin{align*}
  74. \begin{rcases}
  75. f^L(x)=x^2+x+1\\
  76. f^R(x)=x+1
  77. \end{rcases}
  78. ~f(x) = f^L(x^2) &+ x \cdot f^R(x^2)\\
  79. = (x^2)^2 + (x^2) + 1 &+ x \cdot ((x^2) + 1)\\
  80. = x^4 + x^2 + 1 &+ x^3 + x
  81. \end{align*}
  82. % \begin{enumerate}
  83. % \item V sends to P some $\alpha_0 \in \mathbb{F}$.
  84. % Let
  85. % \begin{equation}\tag{$A_0$}
  86. % f_0(x) = f_0^L(x^2) + x f_0^R(x^2)
  87. % \end{equation}
  88. % \item P sends
  89. % \begin{equation}\tag{$B_0$}
  90. % f_1(x) = f_0^L(x) + \alpha_0 f_0^R(x)
  91. % \end{equation}
  92. % to V.
  93. %
  94. % (remember that "sends" in IOP model is that P commits to it)
  95. % \item V sends to P some $\alpha_1 \in \mathbb{F}$.
  96. % Let
  97. % \begin{equation}\tag{$A_1$}
  98. % f_1(x) = f_1^L(x^2) + x f_1^R(x^2)
  99. % \end{equation}
  100. % \item P sends
  101. % \begin{equation}\tag{$B_1$}
  102. % f_2(x) = f_1^L(x) + \alpha_1 f_1^R(x)
  103. % \end{equation}
  104. % to V.
  105. % \item Keep repeating the process, eg. let
  106. % \begin{equation}\tag{$A_2$}
  107. % f_2(x) = f_2^L(x^2) + x f_2^R(x^2)
  108. % \end{equation}
  109. % until $f_i^L,~ f_i^R$ are constant (degree 0 polynomials).
  110. % \item Once $f_i^L,~ f_i^R$ are constant, P sends them to V.
  111. % \end{enumerate}
  112. %
  113. % Notice that at each step, $deg(f_i)$ halves.
  114. \vspace{30px}
  115. \paragraph{Proof generation}
  116. \emph{(Commitment phase)}
  117. P starts from $f(x)$, and for $i=0$ sets $f_0(x)=f(x)$.
  118. \begin{enumerate}
  119. \item $\forall~i \in \{0, log(d)\}$, with $d = deg~f(x)$,\\
  120. P computes $f_i^L(x),~ f_i^R(x)$ for which
  121. \begin{equation}\tag{eq. $A_i$}
  122. f_i(x) = f_i^L(x^2) + x f_i^R(x^2)
  123. \end{equation}
  124. holds.
  125. \item V sends challenge $\alpha_i \in \mathbb{F}$
  126. \item P commits to the random linear combination $f_{i+1}$, for
  127. \begin{equation}\tag{eq. $B_i$}
  128. f_{i+1}(x) = f_i^L(x) + \alpha_i f_i^R(x)
  129. \end{equation}
  130. \item P sets $f_i(x) := f_{i+1}(x)$ and starts again the iteration.
  131. \end{enumerate}
  132. Notice that at each step, $deg(f_i)$ halves.
  133. This is done until the last step, where $f_i^L(x),~ f_i^R(x)$ are constant (degree 0 polynomials). For which P does not commit but gives their values directly to V.
  134. \emph{(Query phase)}
  135. P would receive a challenge $z \in D$ set by V (where $D$ is the evaluation domain, $D \in \mathbb{F}$), and P would open the commitments at $\{z^{2^i}, -z^{2^i}\}$ for each step $i$.
  136. (Recall, "opening" means that would provide a proof (MerkleProof) of it).
  137. \paragraph{Data sent from P to V}
  138. \begin{itemize}
  139. \item[] Commitments: $\{Comm(f_i)\}_0^{log(d)}$\\
  140. {\scriptsize eg. $\{Comm(f_0),~ Comm(f_1),~ Comm(f_2),~ ...,~ Comm(f_{log(d)})\}$ }
  141. \item[] Openings: $\{ f_i(z^{2^i}),~f_i(-(z^{2^i})) \}_0^{log(d)}$\\
  142. for a challenge $z \in D$ set by V\\
  143. {\scriptsize eg. $f_0(z),~ f_0(-z),~ f_1(z^2),~ f_1(-z^2),~ f_2(z^4),~ f_2(-z^4),~ f_3(z^8),~ f_3(-z^8),~ \ldots$}
  144. \item[] Constant values of last iteration: $\{f_k^L,~f_k^R\}$, for $k=log(d)$
  145. \end{itemize}
  146. % \begin{figure}[htp]
  147. % \centering
  148. % \begin{footnotesize}
  149. % \begin{sequencediagram}
  150. % \newinst[0]{p}{Prover}
  151. % \newinst[5]{v}{Verifier}
  152. %
  153. % \mess{p}{$\{Comm(f_i)\}_0^{log(d)},~ \{f_i(z^{2^i}),~f_i(-(z^{2^i})) \}_0^{log(d)},~ \{f_k^L,~ f_k^R\}$}{v}
  154. %
  155. % \end{sequencediagram}
  156. % \end{footnotesize}
  157. % \caption[FRI-LDT]{sketch of the FRI-LDT flow}
  158. % \label{fig:fri-ldt}
  159. % \end{figure}
  160. \paragraph{Verification}
  161. V receives:
  162. \begin{align*}
  163. \text{Commitments:}~ &Comm(f_i),~ \forall i \in \{0, log(d)\}\\
  164. \text{Openings:}~ &\{o_i, o_i'\}=\{ f_i(z^{2^i}),~f_i(-(z^{2^i})) \},~ \forall i \in \{0, log(d)\}\\
  165. \text{Constant vals:}~ &\{f_k^L,~f_k^R\}
  166. \end{align*}
  167. \vspace{20px}
  168. For all $i \in \{0, log(d)\}$, V knows the openings at $z^{2^i}$ and $-(z^{2^i})$ for\\
  169. $Comm(f_i(x))$, which are $o_i=f_i(z^{2^i})$ and $o_i'=f_i(-(z^{2^i}))$ respectively.
  170. V, from (eq. $A_i$), knows that
  171. $$f_i(x)=f_i^L(x^2) + x f_i^R(x^2)$$
  172. should hold, thus
  173. $$f_i(z)=f_i^L(z^2) + z f_i^R(z^2)$$
  174. where $f_i(z)$ is known, but $f_i^L(z^2),~f_i^R(z^2)$ are unknown.
  175. But, V also knows the value for $f_i(-z)$, which can be represented as
  176. $$f_i(-z)=f_i^L(z^2) - z f_i^R(z^2)$$
  177. (note that when replacing $x$ by $-z$, it loses the negative in the power, not in the linear combination).
  178. Thus, we have the system of independent linear equations
  179. \begin{align*} % TODO add braces on left
  180. f_i(z)&=f_i^L(z^2) + z f_i^R(z^2)\\
  181. f_i(-z)&=f_i^L(z^2) - z f_i^R(z^2)
  182. \end{align*}
  183. for which V will find the value of $f_i^L(z^{2^i}),~f_i^R(z^{2^i})$.
  184. Equivalently it can be represented by
  185. $$
  186. \begin{pmatrix}
  187. 1 & z\\
  188. 1 & -z
  189. \end{pmatrix}
  190. \begin{pmatrix}
  191. f_i^L(z^2)\\
  192. f_i^R(z^2)
  193. \end{pmatrix}
  194. =
  195. \begin{pmatrix}
  196. f_i(z)\\
  197. f_i(-z)
  198. \end{pmatrix}
  199. $$
  200. where V will find the values of $f_i^L(z^{2^i}),~f_i^R(z^{2^i})$ being
  201. \begin{align*}
  202. f_i^L(z^{2^i})=\frac{f_i(z) + f_i(-z)}{2}\\
  203. f_i^R(z^{2^i})=\frac{f_i(z) - f_i(-z)}{2z}\\
  204. \end{align*}
  205. Once, V has computed $f_i^L(z^{2^i}),~f_i^R(z^{2^i})$, can use them to compute the linear combination of
  206. $$
  207. f_{i+1}(z^{2^i}) = f_i^L(z^{2^i}) + \alpha_i f_i^R(z^{2^i})
  208. $$
  209. obtaining then $f_{i+1}(z^{2^i})$. This comes from (eq. $B_i$).
  210. Now, V checks that the obtained $f_{i+1}(z^{2^i})$ is equal to the received opening $o_{i+1}=f_{i+1}(z^{2^i})$ from the commitment done by P.
  211. V checks also the commitment of $Comm(f_{i+1}(x))$ for the opening $o_{i+1}=f_{i+1}(z^{2^i})$.\\
  212. If the checks pass, V is convinced that $f_1(x)$ was committed honestly.
  213. Now, sets $i := i+1$ and starts a new iteration.
  214. For the last iteration, V checks that the obtained $f_i^L(z^{2^i}),~f_i^R(z^{2^i})$ are equal to the constant values $\{f_k^L,~f_k^R\}$ received from P.
  215. \vspace{10px}
  216. It needs $log(d)$ iterations, and the number of queries (commitments + openings sent and verified) needed is $2 \cdot log(d)$.
  217. \subsection{Parameters}
  218. P commits to $f_i$ restricted to a subfield $F_0 \subset \mathbb{F}$.
  219. Let $0<\rho<1$ be the \emph{rate} of the code, such that
  220. $$|F_0| = \rho^{-1} \cdot d$$
  221. \begin{theorem}
  222. For $\delta \in (0, 1-\sqrt{\rho})$, we have that if V accepts, then w.v.h.p. (with very high probability) $\Delta(f_0,~ p^d) \leq \delta$.
  223. \end{theorem}
  224. \section{FRI as polynomial commitment scheme}
  225. This section overviews the trick from \cite{cryptoeprint:2019/1020} to convert FRI into a polynomial commitment.
  226. Want to check that the evaluation of $f(x)$ at $r$ is $f(r)$, which is equivalent to proving that $\exists ~Q \in \mathbb{F}[x]$ with $deg(Q)=d-1$, such that
  227. $$
  228. f(x)-f(r) = Q(x) \cdot (x-r)
  229. $$
  230. note that $f(x)-f(r)$ evaluated at $r$ is $0$, so $(x-r) | (f(x)-f(r))$, in other words
  231. $(f(x)-f(r))$ is a multiple of $(x-r)$ for a polynomial $Q(x)$.
  232. Let us define $g(x) = \frac{f(x)-f(r)}{x-r}$.
  233. Prover uses FRI-LDT \ref{sec:fri-ldt} to commit to $g(x)$, and then prove w.v.h.p that $deg(g) \leq d-1$ ($\Longleftrightarrow \Delta(g,~ p^{d-1} \leq \delta$).
  234. Prover was already proving that $deg(f) \leq d$.
  235. Now, the missing thing to prove is that $g(x)$ has the right shape. We can relate $g$ to $f$ as follows:
  236. V does the normal FRI-LDT, but in addition, at the first iteration:
  237. V has $f(z)$ and $g(z)$ openings, so can verify
  238. $$g(z) = (f(z)-f(r))\cdot (z-r)^{-1}$$
  239. \bibliography{paper-notes.bib}
  240. \bibliographystyle{unsrt}
  241. \end{document}