|
|
@ -194,8 +194,12 @@ |
|
|
|
\newcommand{\zkSNARKs}{\term{zk-SNARKs}} |
|
|
|
\newcommand{\memo}{\term{memo field}} |
|
|
|
\newcommand{\Memos}{\titleterm{Memo Fields}} |
|
|
|
\newcommand{\keyAgreementScheme}{\term{key agreement scheme}} |
|
|
|
\newcommand{\KeyAgreementScheme}{\titleterm{Key Agreement Scheme}} |
|
|
|
\newcommand{\keyDerivationFunction}{\term{Key Derivation Function}} |
|
|
|
\newcommand{\KeyDerivationFunction}{\titleterm{Key Derivation Function}} |
|
|
|
\newcommand{\symmetricEncryptionScheme}{\term{symmetric authenticated encryption scheme}} |
|
|
|
\newcommand{\SymmetricEncryptionScheme}{\titleterm{Symmetric Authenticated Encryption Scheme}} |
|
|
|
\newcommand{\pseudoRandomFunction}{\term{Pseudo Random Function}} |
|
|
|
\newcommand{\pseudoRandomFunctions}{\term{Pseudo Random Functions}} |
|
|
|
\newcommand{\PseudoRandomFunctions}{\titleterm{Pseudo Random Functions}} |
|
|
@ -289,6 +293,11 @@ |
|
|
|
\newcommand{\KDF}{\mathsf{KDF}} |
|
|
|
\newcommand{\kdftag}{\mathsf{kdftag}} |
|
|
|
\newcommand{\kdfinput}{\mathsf{kdfinput}} |
|
|
|
\newcommand{\AsymPublic}{\mathsf{AsymPublic}} |
|
|
|
\newcommand{\AsymPrivate}{\mathsf{AsymPrivate}} |
|
|
|
\newcommand{\AsymSharedSecret}{\mathsf{AsymSharedSecret}} |
|
|
|
\newcommand{\KeyAgreementGen}{\mathsf{KeyAgreementGen}} |
|
|
|
\newcommand{\KeyAgreement}{\mathsf{KeyAgreement}} |
|
|
|
\newcommand{\SymEncrypt}[1]{\mathsf{SymEncrypt}_{#1}} |
|
|
|
\newcommand{\SymDecrypt}[1]{\mathsf{SymDecrypt}_{#1}} |
|
|
|
\newcommand{\SymSpecific}{\mathsf{AEAD\_CHACHA20\_POLY1305}} |
|
|
@ -735,15 +744,18 @@ and $\SymEncrypt{\Key}(P) \neq C$. |
|
|
|
%an encryption algorithm $\AuthEncEncrypt \typecolon \Nonce \times ...$, |
|
|
|
%and a decryption algorithm $\AuthEncDecrypt$. |
|
|
|
|
|
|
|
\nsubsubsection{Key Agreement Scheme} |
|
|
|
\nsubsubsection{\KeyAgreementScheme} |
|
|
|
|
|
|
|
\todo{abstract functionality of Curve25519} |
|
|
|
A \keyAgreementScheme is a cryptographic protocol in which two parties agree |
|
|
|
a shared secret, each using their private key and the other party's public key. |
|
|
|
Such a scheme defines a type of public keys $\AsymPublic$, a type of private |
|
|
|
keys $\AsymPrivate$, and a type of shared secrets $\AsymSharedSecret$. |
|
|
|
|
|
|
|
\nsubsubsection{\KeyDerivationFunction} |
|
|
|
Let $\KeyAgreementGen \typecolon () \rightarrow \AsymPublic \times \AsymPrivate$ |
|
|
|
be a randomized algorithm generating a (public, private) key pair. |
|
|
|
|
|
|
|
$\KDF \typecolon \setofNew \times GeneralCRHOutput \times AsymPrivate \times AsymPublic \times AsymPublic |
|
|
|
\rightarrow \Keyspace$ is a \keyDerivationFunction, suitable for use |
|
|
|
with ... and deriving keys for $\SymEncrypt{}$. |
|
|
|
Let $\KeyAgreement \typecolon \AsymPrivate \times \AsymPublic \rightarrow \AsymSharedSecret$ |
|
|
|
be the agreement function. |
|
|
|
|
|
|
|
|
|
|
|
\nsubsection{\JoinSplitTransfers{} and Descriptions} \label{pourdesc} |
|
|
|