2016-04-19 20:55:35 +02:00
|
|
|
\documentclass{llncs}
|
|
|
|
%\usepackage[margin=1in,a4paper]{geometry}
|
|
|
|
\usepackage[T1]{fontenc}
|
|
|
|
\usepackage{palatino}
|
|
|
|
\usepackage{xspace}
|
|
|
|
\usepackage{microtype}
|
|
|
|
\usepackage{tikz,eurosym}
|
|
|
|
\usepackage{amsmath,amssymb}
|
|
|
|
\usepackage{enumitem}
|
|
|
|
\usetikzlibrary{shapes,arrows}
|
|
|
|
\usetikzlibrary{positioning}
|
|
|
|
\usetikzlibrary{calc}
|
|
|
|
|
|
|
|
% Relate to:
|
|
|
|
% http://fc14.ifca.ai/papers/fc14_submission_124.pdf
|
|
|
|
|
|
|
|
% Terminology:
|
|
|
|
% - SEPA-transfer -- avoid 'SEPA transaction' as we use
|
|
|
|
% 'transaction' already when we talk about taxable
|
|
|
|
% transfers of Taler coins and database 'transactions'.
|
|
|
|
% - wallet = coins at customer
|
|
|
|
% - reserve = currency entrusted to exchange waiting for withdrawal
|
|
|
|
% - deposit = SEPA to exchange
|
|
|
|
% - withdrawal = exchange to customer
|
|
|
|
% - spending = customer to merchant
|
|
|
|
% - redeeming = merchant to exchange (and then exchange SEPA to merchant)
|
|
|
|
% - refreshing = customer-exchange-customer
|
|
|
|
% - dirty coin = coin with exposed public key
|
|
|
|
% - fresh coin = coin that was refreshed or is new
|
|
|
|
% - coin signing key = exchange's online key used to (blindly) sign coin
|
|
|
|
% - message signing key = exchange's online key to sign exchange messages
|
|
|
|
% - exchange master key = exchange's key used to sign other exchange keys
|
|
|
|
% - owner = entity that knows coin private key
|
|
|
|
% - transaction = coin ownership transfer that should be taxed
|
|
|
|
% - sharing = coin copying that should not be taxed
|
|
|
|
|
|
|
|
|
|
|
|
\title{Post-quantum anonymity in Taler}
|
|
|
|
|
|
|
|
\begin{document}
|
|
|
|
\mainmatter
|
|
|
|
|
|
|
|
\author{Jeffrey Burdges}
|
2016-12-23 11:37:39 +01:00
|
|
|
\institute{Inria / GNUnet / Taler}
|
2016-04-19 20:55:35 +02:00
|
|
|
|
|
|
|
|
|
|
|
\maketitle
|
|
|
|
|
|
|
|
\begin{abstract}
|
|
|
|
David Chaum's original RSA blind sgnatures provide information theoretic
|
|
|
|
anonymity for customers' purchases. In practice, there are many schemes
|
2017-05-07 14:01:02 +02:00
|
|
|
that weaken this to provide properties, such as offline transactions or
|
|
|
|
taxability in Taler. We describe a refresh protocol for Taler that
|
|
|
|
provides customers with post-quantum anonymity. It replaces an elliptic
|
|
|
|
curve Diffe-Hellman operation with a hash-based encryption scheme for
|
|
|
|
the proof-of-trust via key knoledge property that Taler requires to
|
|
|
|
distinguish untaxable operations from taxable purchases.
|
2016-04-19 20:55:35 +02:00
|
|
|
\end{abstract}
|
|
|
|
|
|
|
|
|
|
|
|
\section{Introduction}
|
|
|
|
|
|
|
|
David Chaum's RSA blind sgnatures \cite{} can provide financial
|
|
|
|
security for the exchange, or traditionally mint,
|
|
|
|
assuming RSA-CTI \cite{,}.
|
|
|
|
|
|
|
|
A typical exchange deployment must record all spent coins to prevent
|
|
|
|
double spending. It would therefore rotate ``denomination'' signing
|
|
|
|
keys every few weeks or months to keep this database from expanding
|
|
|
|
indefinitely \cite{Taler??}. As a consequence, our exchange has
|
|
|
|
ample time to respond to advances in cryptgraphy by increasing their
|
|
|
|
key sizes, updating wallet software with new algorithms, or
|
|
|
|
even shutting down.
|
|
|
|
|
|
|
|
In particular, there is no chance that quantum computers will emerge
|
|
|
|
and become inexpensive within the lifetime of a demonination key.
|
|
|
|
Indeed, even a quantum computer that existed only in secret posses
|
|
|
|
little threat because the risk of exposing that secret probably exceeds
|
|
|
|
the exchange's value.
|
|
|
|
|
|
|
|
\smallskip
|
|
|
|
|
|
|
|
We cannot make the same bold pronouncement for the customers' anonymity
|
|
|
|
however. We must additionally ask if customers' transactions can be
|
2016-05-22 21:51:32 +02:00
|
|
|
deanonymized in the future by the invention of quantum computes, or
|
2016-04-19 20:55:35 +02:00
|
|
|
mathematical advances.
|
|
|
|
|
|
|
|
David Chaum's original RSA blind sgnatures provide even information
|
|
|
|
theoretic anonymity for customers, giving the desired negative answer.
|
|
|
|
There are however many related schemes that add desirable properties
|
|
|
|
at the expense of customers' anonymity. In particular, any scheme
|
|
|
|
that supports offline merchants must add a deanonymization attack
|
|
|
|
when coins are double spent \cite{B??}.
|
|
|
|
|
|
|
|
Importantly, there are reasons why exchanges must replace coins that
|
|
|
|
do not involve actual financial transactons, like to reissue a coin
|
|
|
|
before the exchange rotates the denomination key that signed it, or
|
2020-07-22 23:56:52 +02:00
|
|
|
protect users' anonymity after a merchant receives a coin, but fails
|
2016-04-19 20:55:35 +02:00
|
|
|
to process it or deliver good.
|
|
|
|
|
|
|
|
In Taler, coins can be partially spent by signing with the coin's key
|
|
|
|
for only a portion of the value determined by the coin's denomination
|
|
|
|
key. This allows precise payments but taints the coin with a
|
|
|
|
transaction, which frequently entail user data like a shipng address.
|
|
|
|
To correct this, a customer does a second transaction with the exchange
|
|
|
|
where they sign over the partially spent coin's risidual balance
|
|
|
|
in exchange for new freshly anonymized coins.
|
|
|
|
Taler employs this {\em refresh} or {\em melt protocol} for
|
|
|
|
both for coins tainted through partial spending or merchant failures,
|
|
|
|
as well as for coin replacement due to denomination key roration.
|
|
|
|
|
|
|
|
If this protocol were simply a second transaction, then customers
|
|
|
|
would retain information theoreticaly secure anonymity.
|
2020-07-22 23:56:52 +02:00
|
|
|
In Taler however, we require that the exchange learns accurate income
|
2016-04-19 20:55:35 +02:00
|
|
|
information for merchants. If we use a regular transaction, then
|
|
|
|
a customer could conspire to help the merchant hide their income
|
|
|
|
\cite[]{Taler??}.
|
|
|
|
To prevent this, the refresh protocol requires that a customer prove
|
|
|
|
that they could learn the private key of the resulting new coins.
|
|
|
|
|
|
|
|
At this point, Taler employs an elliptic curve Diffie-Hellman key
|
|
|
|
exchange between the coin's signing key and a new linking key
|
|
|
|
\cite[??]{Taler??}. As the public linking key is exposed,
|
|
|
|
an adversary with a quantum computer could trace any coins involved
|
|
|
|
in either partial spending operations or aborted transactions.
|
|
|
|
A refresh prompted by denomination key rotation incurs no anonymity
|
|
|
|
risks regardless.
|
|
|
|
|
|
|
|
\smallskip
|
|
|
|
|
2016-04-29 04:20:59 +02:00
|
|
|
We propose two variations on Taler's refresh protocol that offer
|
|
|
|
resistane to a quantum adversary.
|
|
|
|
|
|
|
|
First, we describe attaching contemporary post-quantum key exchanges,
|
|
|
|
based on either super-singular eliptic curve isogenies \cite{SIDH} or
|
|
|
|
ring learning with errors (Ring-LWE) \cite{Peikert14,NewHope}.
|
|
|
|
These provide strong post-quantum security so long as the underlying
|
2017-05-07 14:04:15 +02:00
|
|
|
scheme remains secure; however, these schemes' youth leaves them
|
2016-05-01 20:38:37 +02:00
|
|
|
relatively untested.
|
2016-04-19 20:55:35 +02:00
|
|
|
|
2020-07-22 23:56:52 +02:00
|
|
|
Second, we propose a hash based scheme whose anonymity guarantee needs
|
2016-05-01 20:38:37 +02:00
|
|
|
only the one-way assumption on our hash function. In this scheme,
|
2020-07-22 23:56:52 +02:00
|
|
|
the vible security parameter is numerically far smaller than in the
|
2016-05-01 20:38:37 +02:00
|
|
|
key exchange systems, but covers query complexity which we believe
|
|
|
|
suffices.
|
2016-04-19 20:55:35 +02:00
|
|
|
|
2017-05-07 14:04:15 +02:00
|
|
|
We describe this hash based proof-of-encryption-to-self scheme to
|
2020-07-22 23:56:52 +02:00
|
|
|
align the description of all our schemes.
|
2016-04-19 20:55:35 +02:00
|
|
|
|
|
|
|
...
|
|
|
|
|
|
|
|
\smallskip
|
|
|
|
|
2017-05-07 14:04:15 +02:00
|
|
|
%TODO : What is this part for?
|
|
|
|
|
2016-04-19 20:55:35 +02:00
|
|
|
We observe that several elliptic curve blind signature schemes provide
|
|
|
|
information theoreticly secure blinding as well, but
|
|
|
|
Schnorr sgnatures require an extra round trip \cite{??}, and
|
|
|
|
pairing based schemes offer no advnatages over RSA \cite{??}.
|
|
|
|
|
|
|
|
There are several schemes like Anonize \cite{} in Brave \cite{},
|
|
|
|
or Zcash \cite{} used in similar situations to blind signatures.
|
|
|
|
% https://github.com/brave/ledger/blob/master/documentation/Ledger-Principles.md
|
|
|
|
In these systems, anonymity is not post-quantum due to the zero-knowledge
|
|
|
|
proofs they employ.
|
|
|
|
|
|
|
|
|
2016-04-29 04:20:59 +02:00
|
|
|
\section{Taler's refresh protocol}
|
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
\def\Mu{M}
|
|
|
|
\def\Eta{}
|
|
|
|
\def\newmathrm#1{\expandafter\newcommand\csname #1\endcsname{\mathrm{#1}}}
|
|
|
|
\newmathrm{CPK}
|
|
|
|
\newmathrm{CSK}
|
|
|
|
\newmathrm{LPK}
|
|
|
|
\newmathrm{LSK}
|
|
|
|
\newmathrm{KEX}
|
|
|
|
|
|
|
|
|
|
|
|
We shall describe Taler's refresh protocol in this section.
|
|
|
|
All notation defined here persists throughout the remainder of
|
|
|
|
the article.
|
|
|
|
|
|
|
|
We let $\kappa$ denote the exchange's taxation security parameter,
|
|
|
|
meaning the highest marginal tax rate is $1/\kappa$. Also, let
|
|
|
|
$\theta$ denote the maximum number of coins returned by a refresh.
|
2016-04-29 04:20:59 +02:00
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
\smallskip
|
|
|
|
|
|
|
|
We label place holders $\eta$, $\lambda$, $\Lambda$, $\mu$, and $\Mu$
|
|
|
|
for key material involved in post-quantum operations.
|
|
|
|
We view $\Lambda$ and $\Mu$ as public keys with respective
|
|
|
|
private keys $\lambda$ and $\mu$, and
|
2020-07-22 23:56:52 +02:00
|
|
|
$\eta$ as the symmetric key resulting from the key exchange between them.
|
2016-05-01 20:38:37 +02:00
|
|
|
|
2020-07-22 23:56:52 +02:00
|
|
|
We need efficiently computable functions
|
2016-04-29 04:20:59 +02:00
|
|
|
$\CPK$, $\CSK$, $\LPK$, $\LSK$, $\KEX_2$ and $\KEX_3$ such that
|
|
|
|
\begin{itemize}
|
|
|
|
\item $\mu = \CSK(s)$ for a random bitstring $s$,
|
|
|
|
$\Mu = \CPK(\mu)$,
|
2016-05-01 20:38:37 +02:00
|
|
|
\item $\lambda = \LSK(t,\mu)$ for a bitstring $t$,
|
|
|
|
$\Lambda = \LPK(\lambda)$, and
|
2016-04-29 04:20:59 +02:00
|
|
|
\item $\eta = \KEX_2(\lambda,\Mu) = \KEX_3(\Lambda,\mu)$.
|
|
|
|
\end{itemize}
|
|
|
|
In particular, if $\KEX_3(\Lambda,\mu)$ would fail
|
|
|
|
then $\KEX_2(\lambda,\Mu)$ must fail too.
|
|
|
|
|
|
|
|
% Talk about assumption that if KEX_2 works then KEX_3 works?
|
|
|
|
If these are all read as empty, then our description below reduces
|
|
|
|
to Taler's existing refresh protocol.
|
|
|
|
|
|
|
|
\smallskip
|
|
|
|
|
|
|
|
A coin $(C,\Mu,S)$ consists of
|
|
|
|
a Ed25519 public key $C = c G$,
|
|
|
|
a post-quantum public key $\Mu$, and
|
|
|
|
an RSA-FDH signature $S = S_d(C || \Mu)$ by a denomination key $d$.
|
|
|
|
A coin is spent by signing a contract with $C$. The contract must
|
2020-07-22 23:56:52 +02:00
|
|
|
specify the recipient merchant and what portion of the value denoted
|
|
|
|
by the denomination $d$ they receive.
|
2016-04-29 04:20:59 +02:00
|
|
|
If $\Mu$ is large, we may replace it by $H(C || \Mu)$ to make signing
|
2020-07-22 23:56:52 +02:00
|
|
|
contracts more efficient.
|
2016-04-29 04:20:59 +02:00
|
|
|
|
|
|
|
There was of course a blinding factor $b$ used in the creation of
|
|
|
|
the coin's signature $S$. In addition, there was a private seed $s$
|
|
|
|
used to generate $c$, $b$, and $\mu$, but we need not retain $s$
|
|
|
|
outside the refresh protocol.
|
2016-05-01 20:38:37 +02:00
|
|
|
$$ c = H(\textrm{"Ed25519"} || s)
|
2016-04-29 04:20:59 +02:00
|
|
|
\qquad \mu = \CSK(s)
|
2016-05-01 20:38:37 +02:00
|
|
|
\qquad b = H(\textrm{"Blind"} || s) $$
|
2016-04-29 04:20:59 +02:00
|
|
|
|
|
|
|
\smallskip
|
|
|
|
|
|
|
|
We begin refresh with a possibly tainted coin $(C,\Mu,S)$ that
|
|
|
|
we wish to refresh into $n \le \theta$ untainted coins.
|
|
|
|
|
2020-07-22 23:56:52 +02:00
|
|
|
In the change situation, our coin $(C,\Mu,S)$ was partially spent and
|
2016-04-29 04:20:59 +02:00
|
|
|
retains only a part of the value determined by the denominaton $d$.
|
|
|
|
There is usually no denomination that matchets this risidual value
|
|
|
|
so we must refresh from one coin into $n \le \theta$.
|
|
|
|
|
|
|
|
For $x$ amongst the symbols $c$, $C$, $\mu$, $\Mu$, $b$, and $s$,
|
|
|
|
we let $x_{j,i}$ denote the value normally denoted $x$ of
|
|
|
|
the $j$th cut of the $i$th new coin being created.
|
|
|
|
% So $C_{j,i} = c_{j,i} G$, $\Mu_{j,i}$, $m_{j,i}$, and $b^{j,i}$
|
|
|
|
% must be derived from $s^{j,i}$ as above.
|
|
|
|
We need only consider one such new coin at a time usually,
|
2016-05-01 20:38:37 +02:00
|
|
|
so let $x'$ denote $x_{j,i}$ when $i$ and $j$ are clear from context.
|
|
|
|
In other words, $c'$, $\mu'$, and $b_j$ are derived from $s_j$,
|
2016-04-29 04:20:59 +02:00
|
|
|
and both $C' = c' G$ and $\Mu' = \CSK(s')$.
|
|
|
|
|
|
|
|
\paragraph{Wallet phase 1.}
|
|
|
|
\begin{itemize}
|
|
|
|
\item For $j=1 \cdots \kappa$:
|
|
|
|
\begin{itemize}
|
|
|
|
\item Create random $\zeta_j$ and $l_j$.
|
|
|
|
\item Also compute $L_j = l_j G$.
|
2016-05-01 20:38:37 +02:00
|
|
|
\item Generate $\lambda_j = \LSK((j,i),\mu)$,
|
|
|
|
$\Lambda_j = \LPK(\lambda_j)$, and
|
|
|
|
$\eta_j = \KEX_2(\lambda_j,\Mu)$.
|
|
|
|
\item Set the linking commitment $\Gamma_{j,0} = (L_j,E_{l_j C}(\Lambda_j))$.
|
2016-04-29 04:20:59 +02:00
|
|
|
\item Set $k_j = H(l_j C || \eta_j)$.
|
|
|
|
\smallskip
|
|
|
|
\item For $i=1 \cdots n$:
|
|
|
|
\begin{itemize}
|
|
|
|
\item Set $s' = H(\zeta_j || i)$.
|
|
|
|
\item Derive $c'$, $m'$, and $b'$ from $s'$ as above.
|
|
|
|
\item Compute $C' = c' G$ and $\Mu' = \CPK(m')$ too.
|
|
|
|
\item Compute $B_{j,i} = B_{b'}(C' || \Mu')$.
|
2016-05-01 20:38:37 +02:00
|
|
|
\item Encrypt $\Gamma'_{j,i} = E_{k_j}(s')$.
|
|
|
|
\item Set the coin commitments $\Gamma_{j,i} = (\Gamma'_{j,i},B_{j,i})$
|
2016-04-29 04:20:59 +02:00
|
|
|
\end{itemize}
|
|
|
|
\smallskip
|
|
|
|
\end{itemize}
|
|
|
|
\item Send $(C,\Mu,S)$ and the signed commitments
|
|
|
|
$\Gamma_* = S_C( \Gamma_{j,i} \quad\textrm{for}\quad j=1\cdots\kappa, i=0 \cdots n )$.
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
\paragraph{Exchange phase 1.}
|
|
|
|
\begin{itemize}
|
|
|
|
\item Verify the signature $S$ by $d$ on $(C || \Mu)$.
|
|
|
|
\item Verify the signatures by $C$ on the $\Gamma_{j,i}$ in $\Gamma_*$.
|
|
|
|
\item Pick random $\gamma \in \{1 \cdots \kappa\}$.
|
|
|
|
\item Mark $C$ as spent by saving $(C,\gamma,\Gamma_*)$.
|
|
|
|
\item Send $\gamma$ as $S(C,\gamma)$.
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
\paragraph{Wallet phase 2.}
|
|
|
|
\begin{itemize}
|
|
|
|
\item Save $S(C,\gamma)$.
|
|
|
|
\item For $j = 1 \cdots \kappa$ except $\gamma$:
|
|
|
|
\begin{itemize}
|
|
|
|
\item Create a proof $\lambda_j^{\textrm{proof}}$ that
|
2020-07-22 23:56:52 +02:00
|
|
|
$\lambda_j$ is compatible with $\Lambda_j$ and $\Mu$.
|
|
|
|
\item Set a response tuple
|
2016-04-29 04:20:59 +02:00
|
|
|
$R_j = (\zeta_j,l_j,\lambda_j,\lambda_j^{\textrm{proof}})$.
|
|
|
|
\end{itemize}
|
|
|
|
\item Send $S_C(R_j \quad\textrm{for}\quad j \ne \gamma )$.
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
\paragraph{Exchange phase 2.}
|
|
|
|
\begin{itemize}
|
|
|
|
\item Verify the signature by $C$.
|
|
|
|
\item For $j = 1 \cdots \kappa$ except $\gamma$:
|
|
|
|
\begin{itemize}
|
|
|
|
\item Compute $\eta_j = \KEX_2(\lambda_j,\Mu)$.
|
2016-05-01 20:38:37 +02:00
|
|
|
\item Verify that $\Lambda_j = \LPK(\lambda_j)$
|
2016-04-29 04:20:59 +02:00
|
|
|
\item Set $k_j = H(l_j C || \eta_j)$.
|
|
|
|
\item For $i=1 \cdots n$:
|
|
|
|
\begin{itemize}
|
2016-05-01 20:38:37 +02:00
|
|
|
\item Decrypt $s' = D_{k_j}(\Gamma'_{j,i})$.
|
2016-04-29 04:20:59 +02:00
|
|
|
\item Compute $c'$, $m'$, and $b'$ from $s_j$.
|
|
|
|
\item Compute $C' = c' G$ too.
|
|
|
|
\item Verify $B' = B_{b'}(C' || \Mu')$.
|
|
|
|
\end{itemize}
|
|
|
|
\end{itemize}
|
|
|
|
\item If verifications all pass then send $S_{d_i}(B_\gamma)$.
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
We could optionally save long-term storage space by
|
|
|
|
replacing $\Gamma_*$ with both $\Gamma_{\gamma,0}$ and
|
|
|
|
$S_C(\Eta_{j,i} \quad\textrm{for}\quad j \ne \gamma )$.
|
|
|
|
It's clear this requires the wallet send that signature in some phase,
|
2020-07-22 23:56:52 +02:00
|
|
|
but also the wallet must accept a phase 2 response to a phase 1 request.
|
2016-04-29 04:20:59 +02:00
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
\smallskip
|
|
|
|
|
|
|
|
There is good reason to fear tax evasion committed during the
|
|
|
|
initial withdrawal of a coin as well. A merchant simply provides
|
|
|
|
the customer with a blinded but unpurchased coin and asks them to
|
|
|
|
pay to withdraw it.
|
|
|
|
|
|
|
|
\subsection{Withdrawal}\label{subsec:withdrawal}
|
|
|
|
|
|
|
|
In Taler, we may address tax fraud on initial withdrawal by turning
|
2016-05-02 10:10:29 +02:00
|
|
|
withdrawal into a refresh from a pseudo-coin $(C,\Mu)$ in which
|
|
|
|
$C$ is the user's reserve key \cite[??]{Taler} and
|
|
|
|
$\Mu$ s a post-quantum public key kept with $C$.
|
2016-05-01 20:38:37 +02:00
|
|
|
We see below however that our public key algorithm has very different
|
|
|
|
security requirements in this case, impacting our algorithm choices.
|
|
|
|
|
2016-04-29 04:20:59 +02:00
|
|
|
|
|
|
|
\section{Post-quantum key exchanges}
|
|
|
|
|
2016-05-02 11:27:00 +02:00
|
|
|
% \subsection{Isogenies between super-singular elliptic curves}
|
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
In \cite{SIDH?,SIDH16}, there is a Diffie-Helman like key exchange
|
|
|
|
(SIDH) based on computing super-singular eliptic curve isogenies
|
|
|
|
which functions as a drop in replacement, or more likely addition,
|
|
|
|
for Taler's refresh protocol.
|
2016-04-29 04:20:59 +02:00
|
|
|
|
|
|
|
In SIDH, private keys are the kernel of an isogeny in the 2-torsion
|
|
|
|
or the 3-torsion of the base curve. Isogenies based on 2-torsion can
|
|
|
|
only be paired with isogenies based on 3-torsion, and visa versa.
|
|
|
|
This rigidity makes constructing signature schemes with SIDH hard
|
2016-05-02 11:27:00 +02:00
|
|
|
\cite{??SIDHsig??}, but does not impact our use case.
|
2016-04-29 04:20:59 +02:00
|
|
|
|
|
|
|
We let $\mu$ and $\Mu$ be the SIDH 2-torsion private and public keys,
|
2020-07-22 23:56:52 +02:00
|
|
|
respectively. We similarly let $\lambda$ and $\Lambda$ be the
|
2016-04-29 04:20:59 +02:00
|
|
|
SIDH 3-torsion private and public keys.
|
2016-05-01 20:38:37 +02:00
|
|
|
|
|
|
|
We envision the 2-torsion secret key generation function $\CSK(s)$
|
|
|
|
for $\mu$ being deterministic with seed $s$, but the 3-torsion secret
|
|
|
|
key generation function $\LSK()$ ignores the arguments given above
|
|
|
|
Our 2-torsion and 3-torsion public key derivation functions
|
|
|
|
$\CPK(\mu)$ and $\LPK(\lambda)$ along with our two key derivation
|
|
|
|
functions $\KEX_2$ and $\KEX_3$, all work as described in
|
|
|
|
\cite[\S6]{SIDH16}.
|
2016-05-02 11:27:00 +02:00
|
|
|
% We refer to \cite[??]{SIDH?15?} and \cite[]{SIDH?11?} for further background.
|
2016-05-01 20:38:37 +02:00
|
|
|
|
2016-05-02 11:27:00 +02:00
|
|
|
If using SIDH, then we naturally depend upon the security assumption
|
|
|
|
used in SIDH, but combining this with ECDH is stronger than either
|
|
|
|
alone.
|
2016-05-01 20:38:37 +02:00
|
|
|
|
2016-05-02 11:27:00 +02:00
|
|
|
... proof ...
|
2016-04-29 04:20:59 +02:00
|
|
|
|
2016-05-02 11:27:00 +02:00
|
|
|
At least, there is no relationship between $\mu$ and $\lambda$ in
|
|
|
|
SIDH though, so $\Lambda$ cannot itself leak any information about
|
|
|
|
$(C,\Mu,S)$.
|
|
|
|
|
|
|
|
% \smallskip
|
2016-04-29 04:20:59 +02:00
|
|
|
|
2016-05-02 11:27:00 +02:00
|
|
|
We note that $\Lambda$ contains two points used by $\KEX_3$ to
|
|
|
|
evaluate its secret isogeny but not used by $\KEX_2$. We do not
|
|
|
|
consider this a weakness for taxability because the cut and choose
|
|
|
|
protocol already requires that the exchange verify the public
|
|
|
|
key $\Lambda_j$ for $j \neq \gamma$.
|
|
|
|
|
|
|
|
\smallskip
|
|
|
|
% \subsection{Ring Learning with Errors}
|
|
|
|
|
|
|
|
In \cite{Peikert14,NewHope}, there is another key exchange based on
|
|
|
|
a variant of the Ring-LWE problem. Ring-LWE key exchange has a
|
|
|
|
worrying relationship with this hidden subgroup problem on dihedral
|
|
|
|
groups \cite{??,??}, but also a reasuring relationship with NP-hard
|
|
|
|
problems.
|
|
|
|
|
|
|
|
We again let $\mu$ and $\Mu$ denote the Alice (initator) side the
|
2020-07-22 23:56:52 +02:00
|
|
|
private and public keys, respectively. We likewise let $\lambda$
|
2016-05-02 11:27:00 +02:00
|
|
|
and $\Lambda$ be the Bob (respondent) private and public keys.
|
|
|
|
% DO IT?
|
2016-04-29 04:20:59 +02:00
|
|
|
Again now, $\CPK$, $\CSK$, $\LPK$, $\LSK$, $\KEX_2$ and $\KEX_3$
|
2016-05-01 20:38:37 +02:00
|
|
|
can be defined from \cite{Peikert14,NewHope}.
|
|
|
|
|
2016-05-02 11:27:00 +02:00
|
|
|
A priori, one worried that unlinkability might fail even without
|
|
|
|
the Ring-LWE key exchange itself being broken because $\lambda_j$
|
|
|
|
and $\Lambda_j$ are constructed using the public key $\Mu$.
|
|
|
|
|
|
|
|
First, the polynomial $a$ commonly depends upon $\Mu$, like in
|
2020-07-22 23:56:52 +02:00
|
|
|
\cite{NewHope}, so unlinkability explicitly depends upon the Ring-LWE
|
2016-05-02 11:27:00 +02:00
|
|
|
problem\cite{}. [[ PROOF ??? ]]
|
|
|
|
|
|
|
|
Second, the reconciliation information in $\Lambda$ might leak
|
|
|
|
additional information about $\lambda$.
|
2020-07-22 23:56:52 +02:00
|
|
|
[[ LITERATURE ADDRESSES THIS POINT ??? ]]
|
2016-05-02 11:27:00 +02:00
|
|
|
|
|
|
|
Ring-LWE key exchanges require that both Alice and Bob's keys be
|
|
|
|
ephemeral because the success or failure of the key exchange
|
|
|
|
leaks one bit about both keys\cite{}. As a result, authentication
|
|
|
|
with Ring-LWE based schemes remains harder than with discrete log
|
|
|
|
schemes\cite{??RLWEsig??}, and this situation impacts us as well.
|
|
|
|
|
|
|
|
A Taler wallet should control both sides during the refresh protocol,
|
|
|
|
which produces an interesting connundrum.
|
|
|
|
An honest wallet could ensure that the key exchange always succeeds.
|
2020-07-22 23:56:52 +02:00
|
|
|
If wallets were honest, then one could tune the Ring-LWE parameters
|
2016-05-02 11:27:00 +02:00
|
|
|
to leave the probability of failure rather high,
|
|
|
|
saving the exchange bandwidth, storage, and verification time.
|
|
|
|
A dishonest wallet and merchant could conversely search the key space
|
|
|
|
to find an exchange that fails, meaning the wallet could aid the
|
|
|
|
merchant in tax evasion.
|
|
|
|
|
|
|
|
[[ IS THE FOLLOWING IMPOSSIBLE ??? ]]
|
|
|
|
|
2020-07-22 23:56:52 +02:00
|
|
|
If possible, we should tune the Ring-LWE parameters to reduce costs
|
2016-05-02 11:27:00 +02:00
|
|
|
to the exchange, and boost the unlinkability for the users, while
|
|
|
|
simultaniously
|
|
|
|
|
|
|
|
% \smallskip
|
|
|
|
% \subsection{Comparson}
|
2016-05-01 20:38:37 +02:00
|
|
|
|
2020-07-22 23:56:52 +02:00
|
|
|
At present, the SIDH implementation in \cite{SIDH16} requires about
|
2016-05-01 20:38:37 +02:00
|
|
|
one third the key material and 100?? times as much CPU time as the
|
2020-07-22 23:56:52 +02:00
|
|
|
Ring-LWE implementation in \cite{NewHope}.
|
2016-05-02 11:27:00 +02:00
|
|
|
[[ We believe this provides a strong reason to continue exploring
|
2020-07-22 23:56:52 +02:00
|
|
|
parameter choices for Ring-LWE key exchange along with protocol tweaks.
|
2016-05-02 11:27:00 +02:00
|
|
|
... ]]
|
2016-04-29 04:20:59 +02:00
|
|
|
|
|
|
|
|
|
|
|
\section{Hashed-based one-sided public keys}
|
|
|
|
|
|
|
|
We now define our hash-based encryption scheme.
|
2020-07-22 23:56:52 +02:00
|
|
|
Let $\delta$ denote our query security parameter and
|
2016-04-29 04:20:59 +02:00
|
|
|
let $\mu$ be a bit string.
|
|
|
|
For $j \le \kappa$, we define a Merkle tree $T_j$ of height $\delta$
|
2016-05-01 20:38:37 +02:00
|
|
|
with leaves $\eta_j = H(\mu || "YeyCoins!" || t || j)$
|
|
|
|
for some leaf index $t \le 2^\delta$.
|
|
|
|
Let $t_j$ denote the root of $T_j$.
|
|
|
|
Set $\Mu = H(t_1 || \cdots || t_\kappa)$,
|
2016-04-29 04:20:59 +02:00
|
|
|
which defines $\CPK(\mu)$.
|
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
Now let $\lambda_j = \LSK((t,j),\mu)$ consist of
|
|
|
|
$(t,j,\eta_j)$ along with both
|
|
|
|
the Merkle tree path that proves $\eta_j$ is a leaf of $T_j$,
|
|
|
|
and $(t_1,\ldots,t_\kappa)$,
|
|
|
|
making $\LSK$ an embelished Merkle tree path function.
|
|
|
|
Also let $\Lambda_j = \LPK(\lambda_j)$ be $(t,j)$
|
2016-04-29 04:20:59 +02:00
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
We define $\KEX_2(\lambda_j,\Mu)$ to be $\eta_j$
|
|
|
|
if $\lambda_j$ proves that $\eta_j$ is the $t$ leaf for $\Mu$,
|
2016-04-29 04:20:59 +02:00
|
|
|
or empty otherwise.
|
2016-05-01 20:38:37 +02:00
|
|
|
$\KEX_3(\Lambda_j,\mu)$ simply recomputes $\eta_j$ as above.
|
|
|
|
If $\KEX_2$ works then so does $\KEX_3$.
|
2016-04-29 04:20:59 +02:00
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
As $\Lambda_j = (t,j)$, it matters that $\lambda_j$ actually
|
|
|
|
demonstrates the position $t$ in the Merkle tree.
|
2016-04-29 04:20:59 +02:00
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
... proofs ...
|
2016-04-29 04:20:59 +02:00
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
\smallskip
|
2016-04-29 04:20:59 +02:00
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
We observe that $\CPK$ has running time $O(2^\delta)$, severely
|
|
|
|
limiting $\delta$. We lack the time-space trade offs resolve
|
|
|
|
this issue for hash-based signature (see \cite{SPHINCS}).
|
|
|
|
|
|
|
|
Imagine that $\delta = 0$ so that $T_j = H(\eta_j)$.
|
|
|
|
In this scenario, a hostile exchange could request two different
|
|
|
|
$\gamma$ to learn all $\eta_j$, if the wallet reruns its second
|
|
|
|
phase. In principle, the wallet saves the exchange's signed
|
|
|
|
choice of $\gamma$ before revealing $\eta_j$ for $j \neq \gamma$.
|
|
|
|
It follows that even $\delta = 0$ does technically provides
|
|
|
|
post-quantum anonymity,
|
|
|
|
|
|
|
|
We must worry about attacks that rewind the wallet from phase 2 to
|
|
|
|
phase 1, or even parallelism bugs where the wallet answer concurrent
|
|
|
|
requests. We cannot remove the curve25519 exchange $l_j C$ from the
|
|
|
|
refresh protocol becausenn such attacks would represent serious risks
|
|
|
|
without it. With our $l_j C$ component, there is little reason for
|
|
|
|
an attacker to pursue $\eta_j$ alone unless they expect to break
|
|
|
|
curve25519 in the future, either through mathematical advances or
|
|
|
|
by building a quantum computer.
|
|
|
|
|
2020-07-22 23:56:52 +02:00
|
|
|
We therefore view $\delta$ as a query complexity parameter whose
|
|
|
|
optimial setting depends upo nthe strength of the overall protocol.
|
2016-04-29 04:20:59 +02:00
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
\smallskip
|
2016-04-29 04:20:59 +02:00
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
We can magnify the effective $\delta$ by using multiple $\eta_j$.
|
2016-04-29 04:20:59 +02:00
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
... analysis ...
|
|
|
|
% multiple withdrawals
|
2016-04-29 04:20:59 +02:00
|
|
|
|
2020-07-22 23:56:52 +02:00
|
|
|
We believe this provides sufficient post-quantum security for
|
2016-05-01 20:38:37 +02:00
|
|
|
refreshing change.
|
2016-04-29 04:20:59 +02:00
|
|
|
|
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
\section{Hash and Ring-LWE hybrid}
|
|
|
|
|
2016-05-02 10:10:29 +02:00
|
|
|
We noted in \S\ref{subsec:withdrawal} above that exchange might
|
|
|
|
require that initial withdrawals employs a refresh-like operation.
|
2020-07-22 23:56:52 +02:00
|
|
|
In this scenario, we refresh from a pseudo-coin $(C,\Mu)$ where
|
2016-05-02 10:10:29 +02:00
|
|
|
$C$ is the user's reserve key \cite[??]{Taler} and
|
|
|
|
$\Mu$ s a post-quantum public key kept with $C$.
|
|
|
|
As a result, our hash-based scheme should increase the security
|
2020-07-22 23:56:52 +02:00
|
|
|
parameter $\delta$ to allow a query for every withdrawal operation.
|
2016-05-02 10:10:29 +02:00
|
|
|
|
2016-05-02 11:27:00 +02:00
|
|
|
Instead, ...
|
|
|
|
[[ ??? we propose using a Merkle tree of Alice side Ring-LWE keys,
|
|
|
|
while continuing to invent the Bob side Ring-LWE key. ??? ]]
|
2016-05-01 20:38:37 +02:00
|
|
|
|
2016-05-02 11:27:00 +02:00
|
|
|
% Use birthday about on Alice vs Bob keys?
|
2016-05-01 20:38:37 +02:00
|
|
|
|
|
|
|
\section{Conclusions}
|
2016-04-29 04:20:59 +02:00
|
|
|
|
2016-05-02 11:27:00 +02:00
|
|
|
...
|
|
|
|
|
2016-04-29 04:20:59 +02:00
|
|
|
|
|
|
|
\bibliographystyle{alpha}
|
|
|
|
\bibliography{taler,rfc}
|
|
|
|
|
|
|
|
% \newpage
|
|
|
|
% \appendix
|
|
|
|
|
|
|
|
% \section{}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\end{document}
|
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
\begin{itemize}
|
|
|
|
\item
|
|
|
|
\item
|
|
|
|
\end{itemize}
|
2016-04-19 20:55:35 +02:00
|
|
|
|
2016-05-02 11:27:00 +02:00
|
|
|
\begin{itemize}
|
|
|
|
\item
|
|
|
|
\item
|
|
|
|
\end{itemize}
|
2016-04-19 20:55:35 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
Crazy pants ideas :
|
2016-04-19 20:55:35 +02:00
|
|
|
|
2016-05-01 20:38:37 +02:00
|
|
|
Use a larger Mrkle tree with start points seeded throughout
|
2016-04-19 20:55:35 +02:00
|
|
|
|
2020-07-22 23:56:52 +02:00
|
|
|
Use a Merkle tree of SWIFFT hash functions because
|
2016-05-01 20:38:37 +02:00
|
|
|
their additive homomorphic property lets you keep the form of a polynomial
|
2016-04-19 20:55:35 +02:00
|
|
|
|
|
|
|
|
|
|
|
|