postquantum.tex (21751B)
1 \documentclass{llncs} 2 %\usepackage[margin=1in,a4paper]{geometry} 3 \usepackage[T1]{fontenc} 4 \usepackage{palatino} 5 \usepackage{xspace} 6 \usepackage{microtype} 7 \usepackage{tikz,eurosym} 8 \usepackage{amsmath,amssymb} 9 \usepackage{enumitem} 10 \usetikzlibrary{shapes,arrows} 11 \usetikzlibrary{positioning} 12 \usetikzlibrary{calc} 13 14 % Relate to: 15 % http://fc14.ifca.ai/papers/fc14_submission_124.pdf 16 17 % Terminology: 18 % - SEPA-transfer -- avoid 'SEPA transaction' as we use 19 % 'transaction' already when we talk about taxable 20 % transfers of Taler coins and database 'transactions'. 21 % - wallet = coins at customer 22 % - reserve = currency entrusted to exchange waiting for withdrawal 23 % - deposit = SEPA to exchange 24 % - withdrawal = exchange to customer 25 % - spending = customer to merchant 26 % - redeeming = merchant to exchange (and then exchange SEPA to merchant) 27 % - refreshing = customer-exchange-customer 28 % - dirty coin = coin with exposed public key 29 % - fresh coin = coin that was refreshed or is new 30 % - coin signing key = exchange's online key used to (blindly) sign coin 31 % - message signing key = exchange's online key to sign exchange messages 32 % - exchange master key = exchange's key used to sign other exchange keys 33 % - owner = entity that knows coin private key 34 % - transaction = coin ownership transfer that should be taxed 35 % - sharing = coin copying that should not be taxed 36 37 38 \title{Post-quantum anonymity in Taler} 39 40 \begin{document} 41 \mainmatter 42 43 \author{Jeffrey Burdges} 44 \institute{Inria / GNUnet / Taler} 45 46 47 \maketitle 48 49 \begin{abstract} 50 David Chaum's original RSA blind sgnatures provide information theoretic 51 anonymity for customers' purchases. In practice, there are many schemes 52 that weaken this to provide properties, such as offline transactions or 53 taxability in Taler. We describe a refresh protocol for Taler that 54 provides customers with post-quantum anonymity. It replaces an elliptic 55 curve Diffe-Hellman operation with a hash-based encryption scheme for 56 the proof-of-trust via key knoledge property that Taler requires to 57 distinguish untaxable operations from taxable purchases. 58 \end{abstract} 59 60 61 \section{Introduction} 62 63 David Chaum's RSA blind sgnatures \cite{} can provide financial 64 security for the exchange, or traditionally mint, 65 assuming RSA-CTI \cite{,}. 66 67 A typical exchange deployment must record all spent coins to prevent 68 double spending. It would therefore rotate ``denomination'' signing 69 keys every few weeks or months to keep this database from expanding 70 indefinitely \cite{Taler??}. As a consequence, our exchange has 71 ample time to respond to advances in cryptgraphy by increasing their 72 key sizes, updating wallet software with new algorithms, or 73 even shutting down. 74 75 In particular, there is no chance that quantum computers will emerge 76 and become inexpensive within the lifetime of a demonination key. 77 Indeed, even a quantum computer that existed only in secret posses 78 little threat because the risk of exposing that secret probably exceeds 79 the exchange's value. 80 81 \smallskip 82 83 We cannot make the same bold pronouncement for the customers' anonymity 84 however. We must additionally ask if customers' transactions can be 85 deanonymized in the future by the invention of quantum computes, or 86 mathematical advances. 87 88 David Chaum's original RSA blind sgnatures provide even information 89 theoretic anonymity for customers, giving the desired negative answer. 90 There are however many related schemes that add desirable properties 91 at the expense of customers' anonymity. In particular, any scheme 92 that supports offline merchants must add a deanonymization attack 93 when coins are double spent \cite{B??}. 94 95 Importantly, there are reasons why exchanges must replace coins that 96 do not involve actual financial transactons, like to reissue a coin 97 before the exchange rotates the denomination key that signed it, or 98 protect users' anonymity after a merchant receives a coin, but fails 99 to process it or deliver good. 100 101 In Taler, coins can be partially spent by signing with the coin's key 102 for only a portion of the value determined by the coin's denomination 103 key. This allows precise payments but taints the coin with a 104 transaction, which frequently entail user data like a shipng address. 105 To correct this, a customer does a second transaction with the exchange 106 where they sign over the partially spent coin's risidual balance 107 in exchange for new freshly anonymized coins. 108 Taler employs this {\em refresh} or {\em melt protocol} for 109 both for coins tainted through partial spending or merchant failures, 110 as well as for coin replacement due to denomination key roration. 111 112 If this protocol were simply a second transaction, then customers 113 would retain information theoreticaly secure anonymity. 114 In Taler however, we require that the exchange learns accurate income 115 information for merchants. If we use a regular transaction, then 116 a customer could conspire to help the merchant hide their income 117 \cite[]{Taler??}. 118 To prevent this, the refresh protocol requires that a customer prove 119 that they could learn the private key of the resulting new coins. 120 121 At this point, Taler employs an elliptic curve Diffie-Hellman key 122 exchange between the coin's signing key and a new linking key 123 \cite[??]{Taler??}. As the public linking key is exposed, 124 an adversary with a quantum computer could trace any coins involved 125 in either partial spending operations or aborted transactions. 126 A refresh prompted by denomination key rotation incurs no anonymity 127 risks regardless. 128 129 \smallskip 130 131 We propose two variations on Taler's refresh protocol that offer 132 resistane to a quantum adversary. 133 134 First, we describe attaching contemporary post-quantum key exchanges, 135 based on either super-singular eliptic curve isogenies \cite{SIDH} or 136 ring learning with errors (Ring-LWE) \cite{Peikert14,NewHope}. 137 These provide strong post-quantum security so long as the underlying 138 scheme remains secure; however, these schemes' youth leaves them 139 relatively untested. 140 141 Second, we propose a hash based scheme whose anonymity guarantee needs 142 only the one-way assumption on our hash function. In this scheme, 143 the vible security parameter is numerically far smaller than in the 144 key exchange systems, but covers query complexity which we believe 145 suffices. 146 147 We describe this hash based proof-of-encryption-to-self scheme to 148 align the description of all our schemes. 149 150 ... 151 152 \smallskip 153 154 %TODO : What is this part for? 155 156 We observe that several elliptic curve blind signature schemes provide 157 information theoreticly secure blinding as well, but 158 Schnorr sgnatures require an extra round trip \cite{??}, and 159 pairing based schemes offer no advnatages over RSA \cite{??}. 160 161 There are several schemes like Anonize \cite{} in Brave \cite{}, 162 or Zcash \cite{} used in similar situations to blind signatures. 163 % https://github.com/brave/ledger/blob/master/documentation/Ledger-Principles.md 164 In these systems, anonymity is not post-quantum due to the zero-knowledge 165 proofs they employ. 166 167 168 \section{Taler's refresh protocol} 169 170 \def\Mu{M} 171 \def\Eta{} 172 \def\newmathrm#1{\expandafter\newcommand\csname #1\endcsname{\mathrm{#1}}} 173 \newmathrm{CPK} 174 \newmathrm{CSK} 175 \newmathrm{LPK} 176 \newmathrm{LSK} 177 \newmathrm{KEX} 178 179 180 We shall describe Taler's refresh protocol in this section. 181 All notation defined here persists throughout the remainder of 182 the article. 183 184 We let $\kappa$ denote the exchange's taxation security parameter, 185 meaning the highest marginal tax rate is $1/\kappa$. Also, let 186 $\theta$ denote the maximum number of coins returned by a refresh. 187 188 \smallskip 189 190 We label place holders $\eta$, $\lambda$, $\Lambda$, $\mu$, and $\Mu$ 191 for key material involved in post-quantum operations. 192 We view $\Lambda$ and $\Mu$ as public keys with respective 193 private keys $\lambda$ and $\mu$, and 194 $\eta$ as the symmetric key resulting from the key exchange between them. 195 196 We need efficiently computable functions 197 $\CPK$, $\CSK$, $\LPK$, $\LSK$, $\KEX_2$ and $\KEX_3$ such that 198 \begin{itemize} 199 \item $\mu = \CSK(s)$ for a random bitstring $s$, 200 $\Mu = \CPK(\mu)$, 201 \item $\lambda = \LSK(t,\mu)$ for a bitstring $t$, 202 $\Lambda = \LPK(\lambda)$, and 203 \item $\eta = \KEX_2(\lambda,\Mu) = \KEX_3(\Lambda,\mu)$. 204 \end{itemize} 205 In particular, if $\KEX_3(\Lambda,\mu)$ would fail 206 then $\KEX_2(\lambda,\Mu)$ must fail too. 207 208 % Talk about assumption that if KEX_2 works then KEX_3 works? 209 If these are all read as empty, then our description below reduces 210 to Taler's existing refresh protocol. 211 212 \smallskip 213 214 A coin $(C,\Mu,S)$ consists of 215 a Ed25519 public key $C = c G$, 216 a post-quantum public key $\Mu$, and 217 an RSA-FDH signature $S = S_d(C || \Mu)$ by a denomination key $d$. 218 A coin is spent by signing a contract with $C$. The contract must 219 specify the recipient merchant and what portion of the value denoted 220 by the denomination $d$ they receive. 221 If $\Mu$ is large, we may replace it by $H(C || \Mu)$ to make signing 222 contracts more efficient. 223 224 There was of course a blinding factor $b$ used in the creation of 225 the coin's signature $S$. In addition, there was a private seed $s$ 226 used to generate $c$, $b$, and $\mu$, but we need not retain $s$ 227 outside the refresh protocol. 228 $$ c = H(\textrm{"Ed25519"} || s) 229 \qquad \mu = \CSK(s) 230 \qquad b = H(\textrm{"Blind"} || s) $$ 231 232 \smallskip 233 234 We begin refresh with a possibly tainted coin $(C,\Mu,S)$ that 235 we wish to refresh into $n \le \theta$ untainted coins. 236 237 In the change situation, our coin $(C,\Mu,S)$ was partially spent and 238 retains only a part of the value determined by the denominaton $d$. 239 There is usually no denomination that matchets this risidual value 240 so we must refresh from one coin into $n \le \theta$. 241 242 For $x$ amongst the symbols $c$, $C$, $\mu$, $\Mu$, $b$, and $s$, 243 we let $x_{j,i}$ denote the value normally denoted $x$ of 244 the $j$th cut of the $i$th new coin being created. 245 % So $C_{j,i} = c_{j,i} G$, $\Mu_{j,i}$, $m_{j,i}$, and $b^{j,i}$ 246 % must be derived from $s^{j,i}$ as above. 247 We need only consider one such new coin at a time usually, 248 so let $x'$ denote $x_{j,i}$ when $i$ and $j$ are clear from context. 249 In other words, $c'$, $\mu'$, and $b_j$ are derived from $s_j$, 250 and both $C' = c' G$ and $\Mu' = \CSK(s')$. 251 252 \paragraph{Wallet phase 1.} 253 \begin{itemize} 254 \item For $j=1 \cdots \kappa$: 255 \begin{itemize} 256 \item Create random $\zeta_j$ and $l_j$. 257 \item Also compute $L_j = l_j G$. 258 \item Generate $\lambda_j = \LSK((j,i),\mu)$, 259 $\Lambda_j = \LPK(\lambda_j)$, and 260 $\eta_j = \KEX_2(\lambda_j,\Mu)$. 261 \item Set the linking commitment $\Gamma_{j,0} = (L_j,E_{l_j C}(\Lambda_j))$. 262 \item Set $k_j = H(l_j C || \eta_j)$. 263 \smallskip 264 \item For $i=1 \cdots n$: 265 \begin{itemize} 266 \item Set $s' = H(\zeta_j || i)$. 267 \item Derive $c'$, $m'$, and $b'$ from $s'$ as above. 268 \item Compute $C' = c' G$ and $\Mu' = \CPK(m')$ too. 269 \item Compute $B_{j,i} = B_{b'}(C' || \Mu')$. 270 \item Encrypt $\Gamma'_{j,i} = E_{k_j}(s')$. 271 \item Set the coin commitments $\Gamma_{j,i} = (\Gamma'_{j,i},B_{j,i})$ 272 \end{itemize} 273 \smallskip 274 \end{itemize} 275 \item Send $(C,\Mu,S)$ and the signed commitments 276 $\Gamma_* = S_C( \Gamma_{j,i} \quad\textrm{for}\quad j=1\cdots\kappa, i=0 \cdots n )$. 277 \end{itemize} 278 279 \paragraph{Exchange phase 1.} 280 \begin{itemize} 281 \item Verify the signature $S$ by $d$ on $(C || \Mu)$. 282 \item Verify the signatures by $C$ on the $\Gamma_{j,i}$ in $\Gamma_*$. 283 \item Pick random $\gamma \in \{1 \cdots \kappa\}$. 284 \item Mark $C$ as spent by saving $(C,\gamma,\Gamma_*)$. 285 \item Send $\gamma$ as $S(C,\gamma)$. 286 \end{itemize} 287 288 \paragraph{Wallet phase 2.} 289 \begin{itemize} 290 \item Save $S(C,\gamma)$. 291 \item For $j = 1 \cdots \kappa$ except $\gamma$: 292 \begin{itemize} 293 \item Create a proof $\lambda_j^{\textrm{proof}}$ that 294 $\lambda_j$ is compatible with $\Lambda_j$ and $\Mu$. 295 \item Set a response tuple 296 $R_j = (\zeta_j,l_j,\lambda_j,\lambda_j^{\textrm{proof}})$. 297 \end{itemize} 298 \item Send $S_C(R_j \quad\textrm{for}\quad j \ne \gamma )$. 299 \end{itemize} 300 301 \paragraph{Exchange phase 2.} 302 \begin{itemize} 303 \item Verify the signature by $C$. 304 \item For $j = 1 \cdots \kappa$ except $\gamma$: 305 \begin{itemize} 306 \item Compute $\eta_j = \KEX_2(\lambda_j,\Mu)$. 307 \item Verify that $\Lambda_j = \LPK(\lambda_j)$ 308 \item Set $k_j = H(l_j C || \eta_j)$. 309 \item For $i=1 \cdots n$: 310 \begin{itemize} 311 \item Decrypt $s' = D_{k_j}(\Gamma'_{j,i})$. 312 \item Compute $c'$, $m'$, and $b'$ from $s_j$. 313 \item Compute $C' = c' G$ too. 314 \item Verify $B' = B_{b'}(C' || \Mu')$. 315 \end{itemize} 316 \end{itemize} 317 \item If verifications all pass then send $S_{d_i}(B_\gamma)$. 318 \end{itemize} 319 320 We could optionally save long-term storage space by 321 replacing $\Gamma_*$ with both $\Gamma_{\gamma,0}$ and 322 $S_C(\Eta_{j,i} \quad\textrm{for}\quad j \ne \gamma )$. 323 It's clear this requires the wallet send that signature in some phase, 324 but also the wallet must accept a phase 2 response to a phase 1 request. 325 326 \smallskip 327 328 There is good reason to fear tax evasion committed during the 329 initial withdrawal of a coin as well. A merchant simply provides 330 the customer with a blinded but unpurchased coin and asks them to 331 pay to withdraw it. 332 333 \subsection{Withdrawal}\label{subsec:withdrawal} 334 335 In Taler, we may address tax fraud on initial withdrawal by turning 336 withdrawal into a refresh from a pseudo-coin $(C,\Mu)$ in which 337 $C$ is the user's reserve key \cite[??]{Taler} and 338 $\Mu$ s a post-quantum public key kept with $C$. 339 We see below however that our public key algorithm has very different 340 security requirements in this case, impacting our algorithm choices. 341 342 343 \section{Post-quantum key exchanges} 344 345 % \subsection{Isogenies between super-singular elliptic curves} 346 347 In \cite{SIDH?,SIDH16}, there is a Diffie-Helman like key exchange 348 (SIDH) based on computing super-singular eliptic curve isogenies 349 which functions as a drop in replacement, or more likely addition, 350 for Taler's refresh protocol. 351 352 In SIDH, private keys are the kernel of an isogeny in the 2-torsion 353 or the 3-torsion of the base curve. Isogenies based on 2-torsion can 354 only be paired with isogenies based on 3-torsion, and visa versa. 355 This rigidity makes constructing signature schemes with SIDH hard 356 \cite{??SIDHsig??}, but does not impact our use case. 357 358 We let $\mu$ and $\Mu$ be the SIDH 2-torsion private and public keys, 359 respectively. We similarly let $\lambda$ and $\Lambda$ be the 360 SIDH 3-torsion private and public keys. 361 362 We envision the 2-torsion secret key generation function $\CSK(s)$ 363 for $\mu$ being deterministic with seed $s$, but the 3-torsion secret 364 key generation function $\LSK()$ ignores the arguments given above 365 Our 2-torsion and 3-torsion public key derivation functions 366 $\CPK(\mu)$ and $\LPK(\lambda)$ along with our two key derivation 367 functions $\KEX_2$ and $\KEX_3$, all work as described in 368 \cite[\S6]{SIDH16}. 369 % We refer to \cite[??]{SIDH?15?} and \cite[]{SIDH?11?} for further background. 370 371 If using SIDH, then we naturally depend upon the security assumption 372 used in SIDH, but combining this with ECDH is stronger than either 373 alone. 374 375 ... proof ... 376 377 At least, there is no relationship between $\mu$ and $\lambda$ in 378 SIDH though, so $\Lambda$ cannot itself leak any information about 379 $(C,\Mu,S)$. 380 381 % \smallskip 382 383 We note that $\Lambda$ contains two points used by $\KEX_3$ to 384 evaluate its secret isogeny but not used by $\KEX_2$. We do not 385 consider this a weakness for taxability because the cut and choose 386 protocol already requires that the exchange verify the public 387 key $\Lambda_j$ for $j \neq \gamma$. 388 389 \smallskip 390 % \subsection{Ring Learning with Errors} 391 392 In \cite{Peikert14,NewHope}, there is another key exchange based on 393 a variant of the Ring-LWE problem. Ring-LWE key exchange has a 394 worrying relationship with this hidden subgroup problem on dihedral 395 groups \cite{??,??}, but also a reasuring relationship with NP-hard 396 problems. 397 398 We again let $\mu$ and $\Mu$ denote the Alice (initator) side the 399 private and public keys, respectively. We likewise let $\lambda$ 400 and $\Lambda$ be the Bob (respondent) private and public keys. 401 % DO IT? 402 Again now, $\CPK$, $\CSK$, $\LPK$, $\LSK$, $\KEX_2$ and $\KEX_3$ 403 can be defined from \cite{Peikert14,NewHope}. 404 405 A priori, one worried that unlinkability might fail even without 406 the Ring-LWE key exchange itself being broken because $\lambda_j$ 407 and $\Lambda_j$ are constructed using the public key $\Mu$. 408 409 First, the polynomial $a$ commonly depends upon $\Mu$, like in 410 \cite{NewHope}, so unlinkability explicitly depends upon the Ring-LWE 411 problem\cite{}. [[ PROOF ??? ]] 412 413 Second, the reconciliation information in $\Lambda$ might leak 414 additional information about $\lambda$. 415 [[ LITERATURE ADDRESSES THIS POINT ??? ]] 416 417 Ring-LWE key exchanges require that both Alice and Bob's keys be 418 ephemeral because the success or failure of the key exchange 419 leaks one bit about both keys\cite{}. As a result, authentication 420 with Ring-LWE based schemes remains harder than with discrete log 421 schemes\cite{??RLWEsig??}, and this situation impacts us as well. 422 423 A Taler wallet should control both sides during the refresh protocol, 424 which produces an interesting connundrum. 425 An honest wallet could ensure that the key exchange always succeeds. 426 If wallets were honest, then one could tune the Ring-LWE parameters 427 to leave the probability of failure rather high, 428 saving the exchange bandwidth, storage, and verification time. 429 A dishonest wallet and merchant could conversely search the key space 430 to find an exchange that fails, meaning the wallet could aid the 431 merchant in tax evasion. 432 433 [[ IS THE FOLLOWING IMPOSSIBLE ??? ]] 434 435 If possible, we should tune the Ring-LWE parameters to reduce costs 436 to the exchange, and boost the unlinkability for the users, while 437 simultaniously 438 439 % \smallskip 440 % \subsection{Comparson} 441 442 At present, the SIDH implementation in \cite{SIDH16} requires about 443 one third the key material and 100?? times as much CPU time as the 444 Ring-LWE implementation in \cite{NewHope}. 445 [[ We believe this provides a strong reason to continue exploring 446 parameter choices for Ring-LWE key exchange along with protocol tweaks. 447 ... ]] 448 449 450 \section{Hashed-based one-sided public keys} 451 452 We now define our hash-based encryption scheme. 453 Let $\delta$ denote our query security parameter and 454 let $\mu$ be a bit string. 455 For $j \le \kappa$, we define a Merkle tree $T_j$ of height $\delta$ 456 with leaves $\eta_j = H(\mu || "YeyCoins!" || t || j)$ 457 for some leaf index $t \le 2^\delta$. 458 Let $t_j$ denote the root of $T_j$. 459 Set $\Mu = H(t_1 || \cdots || t_\kappa)$, 460 which defines $\CPK(\mu)$. 461 462 Now let $\lambda_j = \LSK((t,j),\mu)$ consist of 463 $(t,j,\eta_j)$ along with both 464 the Merkle tree path that proves $\eta_j$ is a leaf of $T_j$, 465 and $(t_1,\ldots,t_\kappa)$, 466 making $\LSK$ an embelished Merkle tree path function. 467 Also let $\Lambda_j = \LPK(\lambda_j)$ be $(t,j)$ 468 469 We define $\KEX_2(\lambda_j,\Mu)$ to be $\eta_j$ 470 if $\lambda_j$ proves that $\eta_j$ is the $t$ leaf for $\Mu$, 471 or empty otherwise. 472 $\KEX_3(\Lambda_j,\mu)$ simply recomputes $\eta_j$ as above. 473 If $\KEX_2$ works then so does $\KEX_3$. 474 475 As $\Lambda_j = (t,j)$, it matters that $\lambda_j$ actually 476 demonstrates the position $t$ in the Merkle tree. 477 478 ... proofs ... 479 480 \smallskip 481 482 We observe that $\CPK$ has running time $O(2^\delta)$, severely 483 limiting $\delta$. We lack the time-space trade offs resolve 484 this issue for hash-based signature (see \cite{SPHINCS}). 485 486 Imagine that $\delta = 0$ so that $T_j = H(\eta_j)$. 487 In this scenario, a hostile exchange could request two different 488 $\gamma$ to learn all $\eta_j$, if the wallet reruns its second 489 phase. In principle, the wallet saves the exchange's signed 490 choice of $\gamma$ before revealing $\eta_j$ for $j \neq \gamma$. 491 It follows that even $\delta = 0$ does technically provides 492 post-quantum anonymity, 493 494 We must worry about attacks that rewind the wallet from phase 2 to 495 phase 1, or even parallelism bugs where the wallet answer concurrent 496 requests. We cannot remove the curve25519 exchange $l_j C$ from the 497 refresh protocol becausenn such attacks would represent serious risks 498 without it. With our $l_j C$ component, there is little reason for 499 an attacker to pursue $\eta_j$ alone unless they expect to break 500 curve25519 in the future, either through mathematical advances or 501 by building a quantum computer. 502 503 We therefore view $\delta$ as a query complexity parameter whose 504 optimial setting depends upo nthe strength of the overall protocol. 505 506 \smallskip 507 508 We can magnify the effective $\delta$ by using multiple $\eta_j$. 509 510 ... analysis ... 511 % multiple withdrawals 512 513 We believe this provides sufficient post-quantum security for 514 refreshing change. 515 516 517 \section{Hash and Ring-LWE hybrid} 518 519 We noted in \S\ref{subsec:withdrawal} above that exchange might 520 require that initial withdrawals employs a refresh-like operation. 521 In this scenario, we refresh from a pseudo-coin $(C,\Mu)$ where 522 $C$ is the user's reserve key \cite[??]{Taler} and 523 $\Mu$ s a post-quantum public key kept with $C$. 524 As a result, our hash-based scheme should increase the security 525 parameter $\delta$ to allow a query for every withdrawal operation. 526 527 Instead, ... 528 [[ ??? we propose using a Merkle tree of Alice side Ring-LWE keys, 529 while continuing to invent the Bob side Ring-LWE key. ??? ]] 530 531 % Use birthday about on Alice vs Bob keys? 532 533 \section{Conclusions} 534 535 ... 536 537 538 \bibliographystyle{alpha} 539 \bibliography{taler,rfc} 540 541 % \newpage 542 % \appendix 543 544 % \section{} 545 546 547 548 \end{document} 549 550 \begin{itemize} 551 \item 552 \item 553 \end{itemize} 554 555 \begin{itemize} 556 \item 557 \item 558 \end{itemize} 559 560 561 562 563 564 Crazy pants ideas : 565 566 Use a larger Mrkle tree with start points seeded throughout 567 568 Use a Merkle tree of SWIFFT hash functions because 569 their additive homomorphic property lets you keep the form of a polynomial 570 571 572