diff --git a/specs/anoncreds1/anoncreds.tex b/specs/anoncreds1/anoncreds.tex index 526e9e8..b0b6225 100644 --- a/specs/anoncreds1/anoncreds.tex +++ b/specs/anoncreds1/anoncreds.tex @@ -61,9 +61,9 @@ \section{Protocol Overview} The simplest credential lifecycle with one credential, single issuer, holder, and verifier is as follows: \begin{enumerate} - \item Issuer determines a credential schema $\mathcal{S} $: the type of cryptographic signatures used to sign the credentials, the number $l$ of attributes in a credential, the indices $A_h\subset \{1,2,\ldots,l\}$ of hidden attributes, the public key $P_k$, the non-revocation credential attribute number $l_r$ and non-revocation public key $P_r$ (Section~\ref{sec:iss-setup}). Then he publishes it on the ledger and announces the attribute semantics. + \item Issuer determines a credential schema $\mathcal{S} $: the type of cryptographic signatures used to sign the credentials, the number $l$ of attributes in a credential, the indices $A_h\subset \{1,2,\ldots,l\}$ of hidden attributes, the public key $P_k$, the non-revocation credential attribute number $l_r$ and non-revocation public key $P_R$ (Section~\ref{sec:iss-setup}). Then he publishes it on the ledger and announces the attribute semantics. \item Holder retrieves the credential schema from the ledger and sets the hidden attributes. - \item Holder requests a credential from issuer. He sends hidden attributes in a blinded form to issuer and agrees on the values of known attributes $A_k=\{1,2, + \item Holder requests a credential from issuer. He sends hidden attributes in a blinded form to issuer and agrees on the values of known attributes $A_r=\{1,2, \ldots,l\}\setminus A_h$. \item Issuer returns a credential pair $(C_p, C_{NR})$ to holder. The first credential contains the requested $l$ attributes. The second credential asserts the non-revocation status of the first one. Issuer publishes the non-revoked status of the credential on the ledger. \item Holder approaches verifier. Verifier sends the Proof Request $\mathcal{E}$ @@ -141,7 +141,7 @@ \subsection{Optional: Setup Correctness Proof}\label{sec:setup-proof} \subsection{Non-revocation Credential Cryptographic Setup} In Sovrin, issuers use CKS accumulator and signatures~\cite{CamenischKS09} to track revocation status of primary credentials, although other signature types will be supported too. Each primary credential is given an index from 1 to $L$. -The CKS accumulator is used to track revoked primary credentials, or equivalently, their indices. The accumulator contains up to $L$ indices of credentials. If issuer has to issue more credentials, another accumulator is prepared, and so on. Each accumulator $A$ has an identifier $I_A$. +The CKS accumulator is used to track revoked primary credentials, or equivalently, their indices. The accumulator contains up to $L$ indices of credentials. If issuer has to issue more credentials, another accumulator is prepared, and so on. Each accumulator $acc_V$ has an identifier $I_{acc}$. Issuer chooses \begin{itemize} @@ -168,9 +168,9 @@ \subsection{Non-revocation Credential Cryptographic Setup} \end{legal} The revocation public key is -$P_r = (h,h_0,h_1,h_2,\widetilde{h},\widehat{h},u,pk,y)$ and the secret key is $(x,sk)$. +$P_R = (h,h_0,h_1,h_2,\widetilde{h},\widehat{h},u,pk,y)$ and the secret key is $(x,sk)$. \subsubsection{New Accumulator Setup} -To create a new accumulator $A$, issuer: +To create a new accumulator $acc_V$, issuer: \begin{legal} \item Generates random $\gamma\pmod{q}$. \item Computes @@ -181,11 +181,11 @@ \subsubsection{New Accumulator Setup} $g_i' = g'^{\gamma^i}$. \item $z = (e(g,g'))^{\gamma^{L+1}}$. \end{legal} -\item Set $V \leftarrow\emptyset$, $\mathrm{acc}\leftarrow 1$. +\item Set $V \leftarrow\emptyset$, $\mathrm{acc_V}\leftarrow 1$. \end{legal} The accumulator public key is $P_a = (z)$ and secret key is $(\gamma)$. -Issuer publishes $(P_a,V)$ on the ledger. The accumulator identifier is $ID_a = z$. +Issuer publishes $(P_a,V)$ on the ledger. The accumulator identifier is $I_{acc} = z$. \section{Issuance of Credentials} @@ -235,16 +235,16 @@ \subsection{Holder Setup} \end{enumerate} Holder prepares for non-revocation credential: \begin{enumerate} - \item Load issuer's revocation key $P_R$ and generate random $s'_R\bmod{q}$. - \item Compute $U_R \leftarrow h_2^{s'_R}$ + \item Load issuer's revocation key $P_R$ and generate random $s'\bmod{q}$. + \item Compute $U_R \leftarrow h_2^{s'}$ taking $h_2$ from $P_R$. \item Send $U_R$ to the issuer. \item For proving correctness of $U_R$ \begin{itemize} - \item generate random $\widetilde{s'_R}\bmod{q}$ and compute $\widetilde{U_R} \leftarrow {h_2}^{\widetilde{s'_R}}$ + \item generate random $\widetilde{s'}\bmod{q}$ and compute $\widetilde{U_R} \leftarrow {h_2}^{\widetilde{s'}}$ \item Compute above challenge $c$ as $c\leftarrow H(U||\widetilde{U}||U_R||\widetilde{U_R}||n_0)$ instead of $c\leftarrow H(U||\widetilde{U}||n_0)$ - \item Compute $\widehat{s'_R}\leftarrow \widetilde{s'_R} + c s'_R$ - \item Send $c$ and $\widehat{s'_R}$ to issuer + \item Compute $\widehat{s'}\leftarrow \widetilde{s'} + c s'$ + \item Send $c$ and $\widehat{s'}$ to issuer \end{itemize} \end{enumerate} @@ -275,7 +275,7 @@ \subsection{Primary Credential Issuance} \overline{S} = A_{R_i}||U_i,\quad H_{\overline{S}} = H(\overline{S}) $$ and sets $m_2 = H_{\overline{S}}$. - \item Create 256-bit integer attributes $\{m_i\}_{i \in A_k}$ for the holder. + \item Create 256-bit integer attributes $\{m_i\}_{i \in A_r}$ for the holder. \item Generate 80-bit nonce $n_0$ and send to the holder. \end{enumerate} Holder: @@ -298,14 +298,14 @@ \subsection{Primary Credential Issuance} \item Verify that $\widehat{v'}$ is a 673-bit number, $\{\widehat{m_i}, \widehat{r_i}\}_{i \in \mathcal{A}_c}$ are 594-bit numbers. \item If a revocable credential is requested \begin{itemize} -\item Compute $\widehat{U_R} = {U_R}^{-c}{h_2}^{\widehat{s'_R}}$ +\item Compute $\widehat{U_R} = {U_R}^{-c}{h_2}^{\widehat{s'}}$ \item Verify that $c$ equals $H(U||\widehat{U}||U_R||\widehat{U_R}||n_0)$ instead of $H(U||\widehat{U}||n_0)$ \end{itemize} \end{enumerate} Issuer prepare the credential: \begin{enumerate} -\item Assigns index $i\leq \geq\leq \geq