Browse Source

Fix the citation format. This required switching to biber and biblatex,

which allowed adding backreferences.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
zips27.reorganisation.1
Daira Hopwood 8 years ago
parent
commit
02973be906
  1. 4
      protocol/Makefile
  2. 123
      protocol/protocol.tex
  3. 251
      protocol/zcash.bib

4
protocol/Makefile

@ -9,10 +9,10 @@ pdf:
# If $(LATEX) fails, touch an input so that 'make' won't think it is up-to-date next time.
rm -f protocol.aux
$(LATEX) protocol.tex || touch incremental_merkle.pdf
bibtex protocol
biber protocol
$(LATEX) protocol.tex || touch incremental_merkle.pdf
$(LATEX) protocol.tex || touch incremental_merkle.pdf
.PHONY: clean
clean:
rm -f protocol.dvi protocol.pdf protocol.bbl protocol.blg protocol.brf protocol.toc protocol.aux protocol.log
rm -f protocol.dvi protocol.pdf protocol.bbl protocol.blg protocol.brf protocol.toc protocol.aux protocol.out protocol.log protocol.bcf protocol.run.xml protocol.ver

123
protocol/protocol.tex

@ -14,6 +14,9 @@
\RequirePackage{hhline}
\RequirePackage{comment}
\RequirePackage[style=alphabetic,maxbibnames=99,dateabbrev=false,urldate=iso8601,backref=true,backrefstyle=none,backend=biber]{biblatex}
\addbibresource{zcash.bib}
% Fonts
\RequirePackage{lmodern}
\RequirePackage{bold-extra}
@ -34,6 +37,16 @@
% bold but not extended
\newcommand{\textbnx}[1]{{\fontseries{b}\selectfont #1}}
\DeclareLabelalphaTemplate{
\labelelement{\field{citekey}}
}
\DefineBibliographyStrings{english}{
page = {page},
pages = {pages},
backrefpage = {$\uparrow$},
backrefpages = {$\uparrow$}
}
\setlength{\oddsidemargin}{-0.25in}
\setlength{\textwidth}{7in}
@ -466,7 +479,7 @@
\nsection{Introduction}
\Zcash is an implementation of the \term{Decentralized Anonymous Payment}
scheme \Zerocash \cite{Zerocash} with some adjustments to terminology,
scheme \Zerocash \cite{BCG+2014} with some adjustments to terminology,
functionality and performance. It bridges the existing \emph{transparent}
payment scheme used by \Bitcoin with a \emph{confidential} payment scheme
protected by zero-knowledge succinct non-interactive arguments of knowledge
@ -484,7 +497,7 @@ This specification is structured as follows:
\item Concrete Protocol | how the functions and encodings of the abstract
protocol are instantiated;
\item Differences from the \Zerocash protocol | a summary of changes from the
protocol in \cite{Zerocash}.
protocol in \cite{BCG+2014}.
\end{itemize}
@ -522,9 +535,9 @@ The notation $a..b$, used as a subscript, means the sequence of values
with indices $a$ through $b$ inclusive. For example,
$\AuthPublicNew{\allNew}$ means the sequence $[\AuthPublicNew{\mathrm{1}},
\AuthPublicNew{\mathrm{2}}, ...\;\AuthPublicNew{\NNew}]$.
(For consistency with the notation in \cite{Zerocash} and in \cite{Equihash},
(For consistency with the notation in \cite{BCG+2014} and in \cite{BK2016},
this specification uses 1-based indexing and inclusive ranges,
notwithstanding the compelling arguments to the contrary in \cite{EWD831}.)
notwithstanding the compelling arguments to the contrary in \cite{EWD-831}.)
The notation $\range{a}{b}$ means the set of integers from $a$ through
$b$ inclusive. $k\range{a}{b}$ means the set containing integers $kn$
@ -951,12 +964,12 @@ where
\item $\CurveMultiply(\bytes{n}, \bytes{q})$ performs point
multiplication of the Curve25519 public key represented by the byte
sequence $\bytes{q}$ by the Curve25519 secret key represented by the
byte sequence $\bytes{n}$, as defined in section 2 of \cite{Curve25519};
byte sequence $\bytes{n}$, as defined in \cite[section 2]{Bern2006};
\item $\CurveBase$ is the public byte sequence representing the Curve25519
base point;
\item $\Clamp(\bytes{x})$ takes a 32-byte sequence $\bytes{x}$ as input
and returns a byte sequence representing a Curve25519 private key, with
bits ``clamped'' as described in section 3 of \cite{Curve25519}:
bits ``clamped'' as described in \cite[section 3]{Bern2006}:
``clear bits $0, 1, 2$ of the first byte, clear bit $7$ of the last byte,
and set bit $6$ of the last byte.'' Here the bits of a byte are numbered
such that bit $b$ has numeric weight $2^b$.
@ -1161,10 +1174,10 @@ key pair is generated for each \transaction, and the $\dataToBeSigned$ is
signed with the private signing key of this key pair. The corresponding public
verification key is included in the \transaction encoding as $\joinSplitPubKey$.
$\JoinSplitSigAlg$ is instantiated as $\JoinSplitSigSpecific$ \cite{ed25519},
$\JoinSplitSigAlg$ is instantiated as $\JoinSplitSigSpecific$ \cite{BDL+2012},
with the additional requirement that $\EdDSAs$ (the integer represented
by $\EdDSAS$) must be less than the prime
$\ell = 2^{252} + 27742317777372353535851937790883648493$ defined in \cite{ed25519},
$\ell = 2^{252} + 27742317777372353535851937790883648493$,
otherwise the signature is considered invalid.
$\JoinSplitSigSpecific$ is defined as using $\JoinSplitSigHashName$ internally.
@ -1192,9 +1205,9 @@ The encoding of a signature is:
\end{itemize}
\changed{
where $\EdDSAR$ and $\EdDSAS$ are as defined in \cite{ed25519}.
where $\EdDSAR$ and $\EdDSAS$ are as defined in \cite{BDL+2012}.
The encoding of a public key is as defined in \cite{ed25519}.
The encoding of a public key is as defined in \cite{BDL+2012}.
}
The condition enforced by the \joinSplitCircuit specified in \crossref{nonmalleablepour}
@ -1214,7 +1227,7 @@ treated like an \emph{output} value, whereas} $\vpubNew$ is treated like an
\changed{
\subparagraph{Note:}
Unlike original \Zerocash \cite{Zerocash}, \Zcash does not have
Unlike original \Zerocash \cite{BCG+2014}, \Zcash does not have
a distinction between Mint and Pour operations. The addition of $\vpubOld$ to a
\joinSplitDescription subsumes the functionality of both Mint and Pour. Also,
\joinSplitDescriptions are indistinguishable regardless of the number of real input
@ -1271,7 +1284,7 @@ $\treepath{i}$ must be a valid \merklePath of depth $\MerkleDepth$, as defined i
\crossref{merkle}, from $\Commitment(\nOld{i})$ to \noteCommitmentTree root $\rt$.
\textbf{Note:} Merkle path validity covers both conditions 1. (a) and 1. (d) of the NP statement
given in section 4.2 of \cite{Zerocash}.
given in \cite[section 4.2]{BCG+2014}.
\subparagraph{Balance}
@ -1323,7 +1336,7 @@ All of the resulting ciphertexts are combined to form a \notesCiphertext.
\changed{
Let $\SymEncrypt{\Key}(\Ptext)$ be authenticated encryption using
$\SymSpecific$ \cite{rfc7539} encryption of plaintext $\Ptext \in \Plaintext$,
$\SymSpecific$ \cite{RFC-7539} encryption of plaintext $\Ptext \in \Plaintext$,
with empty ``associated data", all-zero nonce $\zeros{96}$, and 256-bit key
$\Key \in \Keyspace$.
@ -1394,7 +1407,7 @@ is defined as follows:
}
\textbf{Note:} This corresponds to step 3 (b) i. and ii. (first bullet point) of the
$\Receive$ algorithm shown in Figure 2 of \cite{Zerocash}.
$\Receive$ algorithm shown in \cite[Figure 2]{BCG+2014}.
To test whether a \note is unspent in a particular \blockchainview also requires
the \spendingKey $\AuthPrivate$; the coin is unspent if and only if
@ -1408,7 +1421,7 @@ as \transactions are added to that view. Also, blockchain reorganisations can ca
the \transaction in which a \note was output to no longer be on the consensus
blockchain.
\item The nonce parameter to $\SymSpecific$ is not used.
\item The ``IETF" definition of $\SymSpecific$ from \cite{rfc7539} is
\item The ``IETF" definition of $\SymSpecific$ from \cite{RFC-7539} is
used; this uses a 32-bit block count and a 96-bit nonce, rather than a 64-bit
block count and 64-bit nonce as in the original definition of $\SymCipher$.
\end{itemize}
@ -1512,7 +1525,7 @@ Define:
$\MerkleCRH$ is used to hash \incrementalMerkleTree \merkleHashes.
It is instantiated by the $\SHAName$ function, which takes a 512-bit block
and produces a 256-bit hash. \cite{sha2}
and produces a 256-bit hash. \cite{NIST2015}
\newsavebox{\merklebox}
\begin{lrbox}{\merklebox}
@ -1541,7 +1554,7 @@ $\GeneralCRH{\ell}$ is a collision-resistant hash function. It is used in
It is instantiated by $\Blake{\ell}$, that is, $\BlakeGeneric$ with an output digest
length of $\ell/8$ bytes. $\GeneralCRH(p, x)$ applies unkeyed $\Blake{\ell}$, as
defined in \cite{blake2}, to a 16-byte personalization string $p$ and input $x$.
defined in \cite{ANWW2013}, to a 16-byte personalization string $p$ and input $x$.
\subparagraph{Note:}
$\Blake{\ell}$ is not the same as $\Blake{512}$ truncated to $\ell$ bits.
@ -1693,12 +1706,12 @@ where
\item $\CurveMultiply(\bytes{n}, \bytes{q})$ performs point
multiplication of the Curve25519 public key represented by the byte
sequence $\bytes{q}$ by the Curve25519 secret key represented by the
byte sequence $\bytes{n}$, as defined in section 2 of \cite{Curve25519};
byte sequence $\bytes{n}$, as defined in \cite[section 2]{Bern2006};
\item $\CurveBase$ is the public byte sequence representing the Curve25519
base point;
\item $\Clamp(\bytes{x})$ takes a 32-byte sequence $\bytes{x}$ as input
and returns a byte sequence representing a Curve25519 private key, with
bits ``clamped'' as described in section 3 of \cite{Curve25519}:
bits ``clamped'' as described in \cite[section 3]{Bern2006}:
``clear bits $0, 1, 2$ of the first byte, clear bit $7$ of the last byte,
and set bit $6$ of the last byte.'' Here the bits of a byte are numbered
such that bit $b$ has numeric weight $2^b$.
@ -1859,7 +1872,7 @@ and \spendingKeys.
Addresses and keys can be encoded as a byte sequence; this is called
the \term{raw encoding}. This byte sequence can then be further encoded using
Base58Check. The Base58Check layer is the same as for upstream \Bitcoin
addresses \cite{Base58Check}.
addresses \cite{Bitcoin-Base58}.
$\SHAName$ outputs are always represented as sequences of 32 bytes.
@ -1867,17 +1880,17 @@ The language consisting of the following encoding possibilities is prefix-free.
\nsubsubsection{Transparent Payment Addresses}
These are encoded in the same way as in \Bitcoin \cite{Base58Check}.
These are encoded in the same way as in \Bitcoin \cite{Bitcoin-Base58}.
\nsubsubsection{Transparent Private Keys}
These are encoded in the same way as in \Bitcoin \cite{Base58Check}.
These are encoded in the same way as in \Bitcoin \cite{Bitcoin-Base58}.
\nsubsubsection{Protected Payment Addresses}
A \paymentAddress consists of $\AuthPublic$ and $\TransmitPublic$.
$\AuthPublic$ is a $\SHAName$ output.
$\TransmitPublic$ is a \changed{Curve25519} public key, for use with the
$\TransmitPublic$ is a \changed{Bern2006} public key, for use with the
encryption scheme defined in \crossref{inband}.
The raw encoding of a \paymentAddress consists of:
@ -1902,7 +1915,7 @@ The raw encoding of a \paymentAddress consists of:
}
\item 256 bits specifying $\AuthPublic$.
\item \changed{256 bits} specifying $\TransmitPublic$, \changed{using the
normal encoding of a Curve25519 public key \cite{Curve25519}}.
normal encoding of a Curve25519 public key \cite{Bern2006}}.
\end{itemize}
\nsubsubsection{Spending Keys}
@ -1946,9 +1959,9 @@ Future key representations may make use of these padding bits.
\nsection{Zero-Knowledge Proving System} \label{proofs}
\Zcash uses \zkSNARKs generated by its fork of \libsnark \cite{libsnark}
using the proving system described in \cite{BCTV}, which is a refinement of
the system in \cite{Pinocchio}.
\Zcash uses \zkSNARKs generated by its fork of \libsnark \cite{libsnark-fork}
with the proving system described in \cite{BCTV2015}, which is a refinement of
the system in \cite{PGHR2013}.
The pairing implementation is $\BNImpl$.
@ -1994,7 +2007,7 @@ $(\pi_A \typecolon \GroupG{1},\;
\pi'_C \typecolon \GroupG{1},\;
\pi_K \typecolon \GroupG{1},\;
\pi_H \typecolon \GroupG{1})$.
It is computed as described in Appendix B of \cite{BCTV}.
It is computed as described in \cite[Appendix B]{BCTV2015}.
\subparagraph{Note:}
Many details of the proving system are beyond the scope of this protocol
@ -2065,16 +2078,16 @@ For a point $P \typecolon \GroupG{2} = (x_P, y_P)$:
Non-normative notes:
\begin{itemize}
\item The use of big-endian byte order is different from the encoding
of other integers in this protocol. The above encodings are consistent with the
definition of $\ECtoOSP{}$ for compressed curve points in section
5.5.6.2 of IEEE Std 1363a-2004 \cite{std1363a}. The LSB compressed
of other integers in this protocol. The above encodings are consistent
with the definition of $\ECtoOSP{}$ for compressed curve points in
\cite[section 5.5.6.2]{IEEE2004}. The LSB compressed
form (i.e. $\ECtoOSPXL$) is used for points on $\GroupG{1}$, and the
SORT compressed form (i.e. $\ECtoOSPXS$) for points on $\GroupG{2}$.
\item Testing $y > y'$ for the compression of $\GroupG{2}$ points is equivalent
to testing whether $(a_{y,1}, a_{y,0}) > (a_{-y,1}, a_{-y,0})$ in lexicographic order.
\item Algorithms for decompressing points from the above encodings are
given in Appendix A.12.8 of \cite{std1363} for $\GroupG{1}$, and
Appendix A.12.11 of \cite{std1363a} for $\GroupG{2}$.
given in \cite[Appendix A.12.8]{IEEE2000} for $\GroupG{1}$, and
\cite[Appendix A.12.11]{IEEE2004} for $\GroupG{2}$.
\end{itemize}
When computing square roots in $\GF{q}$ or $\GF{q^2}$ in order to decompress
@ -2108,7 +2121,7 @@ The resulting proof size is 296 bytes.
\vspace{0.8ex}
In addition to the steps to verify a proof given in \cite{BCTV} Appendix B, the
In addition to the steps to verify a proof given in \cite[Appendix B]{BCTV2015}, the
verifier \MUST check, for the encoding of each element, that:
\begin{itemize}
\item the lead byte is of the required form;
@ -2152,7 +2165,7 @@ accept \blocks with headers more than two hours in the future according to its c
4 & $\nBits$ & \type{uint32\_t} & An encoded version of the target threshold this \block's
header hash must be less than or equal to, in the same nBits format used by \Bitcoin.
\cite{nbits} \\ \hline
\cite{Bitcoin-nBits} \\ \hline
32 & $\nNonce$ & \type{char[32]} & An arbitrary field miners change to modify the
header hash in order to produce a hash below the target threshold. \\ \hline
@ -2163,7 +2176,7 @@ according to \crossref{equihash}. \\ \hline
\end{tabularx}
\end{center}
The changes relative to \Bitcoin version 4 blocks as described in \cite{blockheaders} are:
The changes relative to \Bitcoin version 4 blocks as described in \cite{Bitcoin-Block} are:
\begin{itemize}
\item The \blockVersionNumber{} \MUST be 4. Previous versions are not supported. Software
that parses blocks \MUSTNOT assume, when an encoded \block starts with an $\nVersion$
@ -2176,9 +2189,9 @@ The changes relative to \Bitcoin version 4 blocks as described in \cite{blockhea
\nsubsection{Proof of Work}
\Zcash uses Equihash \cite{Equihash} as its Proof of Work. Motivations for
\Zcash uses Equihash \cite{BK2016} as its Proof of Work. Motivations for
changing the Proof of Work from \SHAd used by \Bitcoin are described
in \cite{whyequihash}.
in \cite{WG2016}.
A \block satisfies the Proof of Work if and only if:
\begin{itemize}
@ -2325,8 +2338,7 @@ for this is that little-endian serialization of \blockHeaders is consistent
with \Bitcoin, but using little-endian ordering of bits in the solution
encoding would require bit-reversal (as opposed to only shifting). The
comparison of $\Xi_r$ values obtained by a big-endian conversion is equivalent
to lexicographic comparison as specified in \mbox{section IV A.} of
\cite{Equihash}.
to lexicographic comparison as specified in \cite[section IV A]{BK2016}.
\nsubsubsection{Difficulty filter} \label{difficulty}
@ -2418,7 +2430,7 @@ multiple \notes with different $\Value$ and $\NoteCommitRand$
An adversary can use this to mislead a \note recipient, by sending
two \notes both of which are verified as valid by $\Receive$ (as
defined in Figure 2 of \cite{Zerocash}), but only one of
defined in \cite[Figure 2]{BCG+2014}), but only one of
which can be spent.
We call this a ``Faerie Gold'' attack --- referring to various Celtic
@ -2427,7 +2439,7 @@ but which soon after reveals itself to be leaves, gorse blossoms,
gingerbread cakes, or other less valuable things \cite{LG2004}.
This attack does not violate the security definitions given in
\cite{Zerocash}. The issue could be framed as a problem
\cite{BCG+2014}. The issue could be framed as a problem
either with the definition of Completeness, or the definition of
Balance:
@ -2505,13 +2517,13 @@ $2^{64}$, to find distinct values of $\NoteAddressRand$ with colliding
outputs of the truncated hash, and therefore the same \noteCommitment.
This would have allowed such an attacker to break the balance property
by double-spending \notes, potentially creating arbitrary amounts of
currency for themself. \cite{fixingvulns}
currency for themself \cite{HW2016}.
\Zcash uses a simpler construction with a single $\FullHashName$ evaluation
for the commitment. The motivation for the nested construction in \Zerocash
was to allow Mint transactions to be publically verified without requiring
a ZK proof (as described under step 3 in section 1.3 of
\cite{Zerocash}). Since \Zcash combines ``Mint'' and ``Pour''
a ZK proof (as described under step 3 in
\cite[section 1.3]{BCG+2014}). Since \Zcash combines ``Mint'' and ``Pour''
transactions into a generalized \joinSplitTransfer which always uses a ZK proof,
it does not require the nesting. A side benefit is that this reduces the
number of $\SHA$ evaluations needed to compute each \noteCommitment from
@ -2521,7 +2533,7 @@ three to two, saving a total of four $\SHA$ evaluations in the
\subparagraph{Note:}
\Zcash \noteCommitments are not statistically hiding,
so \Zcash does not support the ``everlasting anonymity'' property
described in section 8.1 of the \Zerocash paper \cite{Zerocash},
described in \cite[section 8.1]{BCG+2014},
even when used as described in that section. While it is possible to
define a statistically hiding, computationally binding commitment scheme
for this use at a 128-bit security level, the overhead of doing so
@ -2541,7 +2553,7 @@ collision resistance of $\CRH$.
encryption scheme used for the in-band secret distribution. This has been
changed to a scheme based on Curve25519 key agreement, and the authenticated
encryption algorithm $\SymSpecific$. This scheme is still loosely based on ECIES,
and on the $\CryptoBoxSeal$ scheme defined in libsodium \cite{cryptoboxseal}.
and on the $\CryptoBoxSeal$ scheme defined in libsodium \cite{libsodium-Seal}.
The motivations for this change were as follows:
@ -2549,11 +2561,11 @@ The motivations for this change were as follows:
\item The \Zerocash paper did not specify the curve to be used.
We believe that Curve25519 has significant side-channel resistance,
performance, implementation complexity, and robustness advantages
over most other available curve choices, as explained in \cite{Curve25519}.
over most other available curve choices, as explained in \cite{Bern2006}.
\item ECIES permits many options, which were not specified. There are at least
--counting conservatively-- 576 possible combinations of options and
algorithms over the four standards (ANSI X9.63, IEEE Std 1363a-2004,
ISO/IEC 18033-2, and SEC 1) that define ECIES variants \cite{eciescomparison}.
ISO/IEC 18033-2, and SEC 1) that define ECIES variants \cite{MAEA2010}.
\item Although the \Zerocash paper states that ECIES satisfies key privacy
(as defined in \cite{BBDP2001}), it is not clear that this holds for
all curve parameters and key distributions. For example, if a group of
@ -2562,10 +2574,10 @@ The motivations for this change were as follows:
ephemeral and recipient public keys. Public key validity is also a concern.
Curve25519 key agreement is defined in a way that avoids these concerns
due to the curve structure and the ``clamping'' of private keys.
\item Unlike the DHAES/DHIES proposal on which it is based \cite{dhaes}, ECIES
\item Unlike the DHAES/DHIES proposal on which it is based \cite{ABR1999}, ECIES
does not require a representation of the sender's ephemeral public key
to be included in the input to the KDF, which may impair the security
properties of the scheme. (The Std 1363a-2004 version of ECIES \cite{std1363a}
properties of the scheme. (The Std 1363a-2004 version of ECIES \cite{IEEE2004}
has a ``DHAES mode'' that allows this, but the representation of the key
input is underspecified, leading to incompatible implementations.)
The scheme we use has both the ephemeral and recipient public key
@ -2608,7 +2620,7 @@ The \joinSplitStatements are still valid because they can only
check that the $\AuthPrivate$ in the witness is \emph{some} preimage of
the $\AuthPublic$ used in the \noteCommitment.
The error is in the proof of Balance in section D.3 of \cite{Zerocash}.
The error is in the proof of Balance in \cite[Appendix D.3]{BCG+2014}.
For the ``$\Adversary$ violates Condition I'' case, the proof says:
\begin{itemize}
@ -2651,7 +2663,7 @@ distinct openings of the \noteCommitment when Condition I or II is violated.
This differs from the 296 bytes specified in \crossref{proofencoding},
because the paper did not take into account the need to encode compressed
$y$-coordinates. The fork of \libsnark used by \Zcash uses a different
format to upstream \libsnark, in order to follow \cite{std1363a}.
format to upstream \libsnark, in order to follow \cite{IEEE2004}.
\end{itemize}
@ -2747,9 +2759,10 @@ of $\PRFaddr{}$ was found by Daira Hopwood.
\nsection{References}
\begingroup
\hfuzz=0.2pt
\renewcommand{\section}[2]{}
\bibliographystyle{plain}
\bibliography{zcash}
\renewcommand{\emph}[1]{\textit{#1}}
\printbibliography
\endgroup
\end{document}

251
protocol/zcash.bib

@ -1,124 +1,117 @@
@misc{Zerocash,
@misc{BCG+2014,
author={Eli Ben-Sasson and Alessandro Chiesa and Christina Garman and Matthew Green and Ian Miers and Eran Tromer and Madars Virza},
title={Zerocash: Decentralized {A}nonymous {P}ayments from {B}itcoin (extended version)},
howpublished={\url{http://zerocash-project.org/media/pdf/zerocash-extended-20140518.pdf}.
Accessed: \mbox{2016-08-06}.
A condensed version appeared in \textsl{Proceedings of the IEEE Symposium on Security and Privacy (Oakland) 2014},
url={http://zerocash-project.org/media/pdf/zerocash-extended-20140518.pdf},
urldate={2016-08-06},
addendum={A condensed version appeared in \textsl{Proceedings of the IEEE Symposium on Security and Privacy (Oakland) 2014},
pages 459--474; IEEE, 2014.}
}
@misc{BCTV,
@misc{BCTV2015,
author={Eli Ben-Sasson and Alessandro Chiesa and Eran Tromer and Madars Virza},
title={Succinct {N}on-{I}nteractive {Z}ero {K}nowledge for a von {N}eumann {A}rchitecture},
url={https://eprint.iacr.org/2013/879},
howpublished={Cryptology ePrint Archive: Report 2013/879.
\url{https://eprint.iacr.org/2013/879}. Last revised \mbox{May 19, 2015}.}
Last revised \mbox{May 19,} 2015.}
}
@misc{Pinocchio,
@misc{PGHR2013,
author={Bryan Parno and Craig Gentry and Jon Howell and Mariana Raykova},
title={Pinocchio: {N}early {P}ractical {V}erifiable {C}omputation},
howpublished={Cryptology ePrint Archive: Report 2013/279.
\url{https://eprint.iacr.org/2013/279}. Last revised \mbox{May 13, 2013}.}
url={https://eprint.iacr.org/2013/279},
howpublished={Cryptology ePrint Archive: Report 2013/279. Last revised \mbox{May 13,} 2013.}
}
@inproceedings{Equihash,
@inproceedings{BK2016,
author={Alex Biryukov and Dmitry Khovratovich},
title={Equihash: {A}symmetric {P}roof-of-{W}ork {B}ased on the {G}eneralized {B}irthday {P}roblem},
booktitle={Proceedings of NDSS '16, 21--24 February 2016, San Diego, CA, USA. ISBN 1-891562-41-X},
year={2016},
publisher={Internet Society},
note={DOI: \mbox{10.14722/ndss.2016.23108}.
\url{https://www.internetsociety.org/sites/default/files/blogs-media/equihash-asymmetric-proof-of-work-based-generalized-birthday-problem.pdf}}
url={https://www.internetsociety.org/sites/default/files/blogs-media/equihash-asymmetric-proof-of-work-based-generalized-birthday-problem.pdf},
doi={10.14722/ndss.2016.23108}
}
@misc{Base58Check,
key={BitcoinBase58Check},
title={Base58{C}heck encoding -- {B}itcoin {W}iki},
howpublished={\url{https://en.bitcoin.it/wiki/Base58Check_encoding}},
note={Accessed: \mbox{2016-01-26}}
@misc{Bitcoin-Base58,
title={Base58{C}heck encoding --- {B}itcoin {W}iki},
url={https://en.bitcoin.it/wiki/Base58Check_encoding},
urldate={2016-01-26}
}
@inproceedings{Curve25519,
@inproceedings{Bern2006,
author={Daniel Bernstein},
title={Curve25519: new {D}iffie-{H}ellman speed records},
booktitle={Public Key Cryptography - PKC 2006. Proceedings of the 9th International Conference on Theory and Practice in Public-Key Cryptography, New York, NY, USA, April 24-26},
year={2006},
publisher={Springer-Verlag},
note={\url{http://cr.yp.to/papers.html#curve25519}.
Date: \mbox{2006-02-09}.
Document ID: 4230efdfa673480fc079449d90f322c0.}
url={http://cr.yp.to/papers.html#curve25519},
date={2006-02-09},
urldate={2016-08-14},
addendum={Document ID: 4230efdfa673480fc079449d90f322c0.}
}
@article{Ed25519,
@article{BDL+2012,
author={Daniel Bernstein and Niels Duif and Tanja Lange and Peter Schwabe and Bo-Yin Yang},
title={High-speed high-security signatures},
journal={Journal of Cryptographic Engineering},
volume={2},
year={2012},
pages={77-89},
note={\url{http://cr.yp.to/papers.html#ed25519}.
Date: \mbox{2011-09-26}.
Document ID: a1a62a2f76d23f65d622484ddd09caf8.}
url={http://cr.yp.to/papers.html#ed25519},
date={2011-09-26},
urldate={2016-08-14},
addendum={Document ID: a1a62a2f76d23f65d622484ddd09caf8.}
}
@book{Unicode,
author={The Unicode Consortium},
publisher={The Unicode Consortium},
year={2015},
year={2016},
title={The Unicode Standard},
note={\url{http://www.unicode.org/versions/latest/}}
url={http://www.unicode.org/versions/latest/}
}
@misc{cryptobox,
author={Daniel Bernstein},
title={Cryptography in {N}a{C}l},
howpublished={\url{https://nacl.cr.yp.to/valid.html}},
note={Accessed: \mbox{2016-02-01}}
}
@misc{cryptoboxseal,
key={libsodium},
@misc{libsodium-Seal,
title={Sealed boxes \hspace{0.4em}---\hspace{0.4em} libsodium},
howpublished={\url{https://download.libsodium.org/doc/public-key_cryptography/sealed_boxes.html}},
note={Accessed: \mbox{2016-02-01}}
url={https://download.libsodium.org/doc/public-key_cryptography/sealed_boxes.html},
urldate={2016-02-01}
}
@misc{sha2,
@misc{NIST2015,
author={NIST},
title={{FIPS} 180-4: Secure {H}ash {S}tandard ({SHS})},
month={August},
year={2015},
note={DOI: 10.6028/NIST.FIPS.180-4},
howpublished={\url{http://csrc.nist.gov/publications/PubsFIPS.html#180-4}}
doi={10.6028/NIST.FIPS.180-4},
url={http://csrc.nist.gov/publications/PubsFIPS.html#180-4},
urldate={2016-08-14}
}
@misc{blake2,
author={Jean-Philippe Aumasson and Samuel Neves and Zooko Wilcox-O'Hearn and
Christian Winnerlein},
month={January 29,},
year={2013},
@misc{ANWW2013,
author={Jean-Philippe Aumasson and \;Samuel Neves and \;Zooko Wilcox-O'Hearn and
\;Christian Winnerlein},
date={2013-01-29},
title={{BLAKE2}: simpler, smaller, fast as {MD5}},
howpublished={\url{https://blake2.net/#sp}}
url={https://blake2.net/#sp},
urldate={2016-08-14}
}
@misc{rfc7693,
@misc{RFC-7693,
author={Markku-Juhani Saarinen (ed.)},
title={Request for {C}omments 7693: {T}he {BLAKE2} {C}ryptographic {H}ash and
{M}essage {A}uthentication {C}ode ({MAC})},
howpublished={Internet Engineering Task Force (IETF).
\url{https://tools.ietf.org/html/rfc7693}}
howpublished={Internet Engineering Task Force (IETF). November 2015},
url={https://tools.ietf.org/html/rfc7693}
}
@misc{sec2-ecdsa,
@misc{Cert2010,
author={Certicom Research},
title={Standards for {E}fficient {C}ryptography 2 ({SEC} 2)},
month={January 27,},
year={2010},
note={Version 2.0.},
howpublished={\url{http://www.secg.org/sec2-v2.pdf}}
date={2010-01-27},
addendum={Version 2.0.},
url={http://www.secg.org/sec2-v2.pdf},
urldate={2016-08-14}
}
@inproceedings{eciescomparison,
@inproceedings{MAEA2010,
author={V. Gayoso Mart{\'i}nez and F. Hern{\'a}ndez Alvarez and
L. Hern{\'a}ndez Encinas and C. S{\'a}nchez {\'A}vila},
title={A {C}omparison of the {S}tandardized {V}ersions of {ECIES}},
@ -127,136 +120,142 @@ L. Hern{\'a}ndez Encinas and C. S{\'a}nchez {\'A}vila},
year={2010},
pages={1-4},
publisher={IEEE},
note={DOI: \mbox{10.1109/ISIAS.2010.5604194}.
\url{https://digital.csic.es/bitstream/10261/32674/1/Gayoso_A%20Comparison%20of%20the%20Standardized%20Versions%20of%20ECIES.pdf}}
doi={10.1109/ISIAS.2010.5604194},
url={https://digital.csic.es/bitstream/10261/32674/1/Gayoso_A%20Comparison%20of%20the%20Standardized%20Versions%20of%20ECIES.pdf},
urldate={2016-08-14}
}
@misc{dhaes,
@misc{ABR1999,
author={Michel Abdalla and Mihir Bellare and Phillip Rogaway},
title={{DHAES}: {A}n {E}ncryption {S}cheme {B}ased on the {D}iffie-{H}ellman {P}roblem},
howpublished={Cryptology ePrint Archive: Report 1999/007.
\url{https://eprint.iacr.org/1999/007}. \mbox{March 17, 1999}.}
url={https://eprint.iacr.org/1999/007},
howpublished={Cryptology ePrint Archive: Report 1999/007. \mbox{March 17,} 1999.}
}
@misc{DGKM2011,
author={Dana Dachman-Soled and Rosario Gennaro and Hugo Krawczyk and Tal Malkin},
title={Computational {E}xtractors and {P}seudorandomness},
howpublished={Cryptology ePrint Archive: Report 2011/708.
\url{https://eprint.iacr.org/2011/708}. \mbox{December 28, 2011}.}
url={https://eprint.iacr.org/2011/708},
howpublished={Cryptology ePrint Archive: Report 2011/708. \mbox{December 28,} 2011.}
}
@misc{secp256k1,
key={BitcoinSecp256k1},
title={Secp256k1 -- {B}itcoin {W}iki},
howpublished={\url{https://en.bitcoin.it/wiki/Secp256k1}},
note={Accessed: \mbox{2016-03-14}}
@misc{Bitcoin-secp256k1,
title={Secp256k1 --- {B}itcoin {W}iki},
url={https://en.bitcoin.it/wiki/Secp256k1},
urldate={2016-03-14}
}
@misc{rawformat,
key={BitcoinTransactionFormat},
title={Raw {T}ransaction {F}ormat -- {B}itcoin {D}eveloper {R}eference},
howpublished={\url{https://bitcoin.org/en/developer-reference#raw-transaction-format}},
note={Accessed: \mbox{2016-03-15}}
@misc{Bitcoin-Format,
title={Raw {T}ransaction {F}ormat --- {B}itcoin {D}eveloper {R}eference},
url={https://bitcoin.org/en/developer-reference#raw-transaction-format},
urldate={2016-03-15}
}
@misc{blockheaders,
key={BitcoinBlockHeaders},
title={Block {H}eaders -- {B}itcoin {D}eveloper {R}eference},
howpublished={\url{https://bitcoin.org/en/developer-reference#block-headers}},
note={Accessed: \mbox{2016-08-08}}
@misc{Bitcoin-Block,
title={Block {H}eaders --- {B}itcoin {D}eveloper {R}eference},
url={https://bitcoin.org/en/developer-reference#block-headers},
urldate={2016-08-08}
}
@misc{nbits,
key={BitcoinTargetnBits},
@misc{Bitcoin-nBits,
title={Target n{B}its --- {B}itcoin {D}eveloper {R}eference},
howpublished={\url{https://bitcoin.org/en/developer-reference#target-nbits}},
note={Accessed: \mbox{2016-08-13}}
url={https://bitcoin.org/en/developer-reference#target-nbits},
urldate={2016-08-13}
}
@book{std1363,
@book{IEEE2000,
author={IEEE Computer Society},
publisher={IEEE},
month={August 29,},
year={2000},
date={2000-08-29},
title={IEEE {S}td 1363-2000: {S}tandard {S}pecifications for {P}ublic-{K}ey {C}ryptography},
note={\url{http://ieeexplore.ieee.org/servlet/opac?punumber=7168}.
Accessed: \mbox{2016-08-03}.
DOI: \mbox{10.1109/IEEESTD.2000.92292}}
url={http://ieeexplore.ieee.org/servlet/opac?punumber=7168},
urldate={2016-08-03},
doi={10.1109/IEEESTD.2000.92292}
}
@book{std1363a,
@book{IEEE2004,
author={IEEE Computer Society},
publisher={IEEE},
month={September 2,},
year={2004},
date={2004-09-02},
title={IEEE {S}td 1363a-2004: {S}tandard {S}pecifications for {P}ublic-{K}ey {C}ryptography --
{A}mendment 1: {A}dditional {T}echniques},
note={\url{http://ieeexplore.ieee.org/servlet/opac?punumber=9276}.
Accessed: \mbox{2016-08-03}.
DOI: \mbox{10.1109/IEEESTD.2004.94612}}
url={http://ieeexplore.ieee.org/servlet/opac?punumber=9276},
urldate={2016-08-03},
doi={10.1109/IEEESTD.2004.94612}
}
@misc{libsnark,
key={libsnark},
title={libsnark: {C}++ library for {zkSNARK} proofs},
howpublished={\url{https://github.com/scipr-lab/libsnark}},
note={Accessed: \mbox{2016-03-15}}
@misc{libsnark-fork,
title={libsnark: {C}++ library for {zkSNARK} proofs (Zcash fork)},
url={https://github.com/zcash/libsnark},
urldate={2016-08-14}
}
@misc{rfc7539,
@misc{RFC-7539,
author={Yoav Nir and Adam Langley},
title={Request for {C}omments 7539: Cha{C}ha20 and {P}oly1305 for {IETF} {P}rotocols},
howpublished={Internet Research Task Force (IRTF).
\url{https://tools.ietf.org/html/rfc7539}. As modified by verified
errata at \url{https://www.rfc-editor.org/errata_search.php?rfc=7539}}
howpublished={Internet Research Task Force (IRTF)},
url={https://tools.ietf.org/html/rfc7539},
addendum={As modified by verified errata at \url{https://www.rfc-editor.org/errata_search.php?rfc=7539}.}
}
@misc{BN2007,
author={Mihir Bellare and Chanathip Namprempre},
title={Authenticated {E}ncryption: {R}elations among notions and analysis of the
generic composition paradigm},
howpublished={Cryptology ePrint Archive: Report 2000/025.
\url{https://eprint.iacr.org/2000/025}. Last revised \mbox{July 14, 2007}.}
url={https://eprint.iacr.org/2000/025},
howpublished={Cryptology ePrint Archive: Report 2000/025. Last revised \mbox{July 14,} 2007.}
}
@misc{BBDP2001,
author={Mihir Bellare and Alexandra Boldyreva and Anand Desai and David Pointcheval},
title={Key-{P}rivacy in {P}ublic-{K}ey {E}ncryption},
howpublished={\url{https://cseweb.ucsd.edu/~mihir/papers/anonenc.html}. Full version, \mbox{September 2001}.}
addendum={Full version.},
month={September},
year={2001},
url={https://cseweb.ucsd.edu/~mihir/papers/anonenc.html},
urldate={2016-08-14}
}
@book{LG2004,
author={Eddie Lenihan and Carolyn Eve Green},
title={Meeting the {O}ther {C}rowd: {T}he {F}airy {S}tories of {H}idden {I}reland},
month={February},
year={2004},
note={\mbox{Pages 109--110.} \mbox{ISBN: 1-58542-206-1}}
publisher={TarcherPerigee},
pages={109-110},
isbn={1-58542-206-1}
}
@misc{GGM2016,
author={Christina Garman and Matthew Green and Ian Miers},
title={Accountable {P}rivacy for {D}ecentralized {A}nonymous {P}ayments},
howpublished={Cryptology ePrint Archive: Report 2016/061.
\url{https://eprint.iacr.org/2016/061}. Last revised \mbox{January 24, 2016}.}
author={Christina Garman\; and \;Matthew Green\; and \;Ian Miers},
title={Accountable\, {P}rivacy\, for\, {D}ecentralized\, {A}nonymous\, {P}ayments},
howpublished={Cryptology ePrint Archive: Report 2016/061. Last revised \mbox{January 24,} 2016},
url={https://eprint.iacr.org/2016/061}
}
@misc{whyequihash,
@misc{WG2016,
author={Zooko Wilcox and Jack Grigg},
title={Why {E}quihash?},
howpublished={Zcash blog. \url{https://z.cash/blog/why-equihash.html},
\mbox{April 15, 2016}. Accessed \mbox{2016-08-05}.}
howpublished={Zcash blog},
date={2016-04-15},
url={https://z.cash/blog/why-equihash.html},
urldate={2016-08-05}
}
@misc{fixingvulns,
author={Taylor Hornby and Zooko Wilcox},
title={Fixing {V}ulnerabilities in the {Z}cash {P}rotocol},
howpublished={Zcash blog. \url{https://z.cash/blog/fixing-zcash-vulns.html},
\mbox{April 25, 2016}. Accessed \mbox{2016-06-22}.}
@misc{HW2016,
author={Taylor Hornby\; and \;Zooko Wilcox},
title={Fixing\, {V}ulnerabilities\, in\, the\, {Z}cash\, {P}rotocol},
howpublished={Zcash blog},
date={2016-04-25},
url={https://z.cash/blog/fixing-zcash-vulns.html},
urldate={2016-06-22}
}
@misc{EWD831,
@misc{EWD-831,
author={Edsger W. Dijkstra},
title={Why numbering should start at zero},
howpublished={Manuscript, August 11, 1982.
Transcribed at \url{https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html}.
Accessed \mbox{2016-08-09}.}
title={Why\, numbering\, should\, start\, at\, zero},
howpublished={\;Manuscript},
date={1982-08-11},
url={https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html},
urldate={2016-08-09}
}

Loading…
Cancel
Save