lsd0009

LSD0009: The GNU Taler Protocol
Log | Files | Refs | README

commit 09acb192cd7319115e366149537a28625eac2df9
parent cd0e8a29ede3335c410f0893b32b54684ea88643
Author: Mikolai Gütschow <mikolai.guetschow@tu-dresden.de>
Date:   Wed,  8 Apr 2026 14:18:07 +0200

protocol/refresh: add introductory text

Diffstat:
Mdraft-guetschow-taler-protocol.md | 64++++++++++++++++++++++++++++++++++++++++++----------------------
Mdraft-guetschow-taler-protocol.xml | 472+++++++++++++++++++++++++++++++++++++++++++------------------------------------
2 files changed, 297 insertions(+), 239 deletions(-)

diff --git a/draft-guetschow-taler-protocol.md b/draft-guetschow-taler-protocol.md @@ -421,6 +421,10 @@ Check-Subtract(value, subtrahend) = # The Taler Crypto Protocol {#procotol} +// todo: briefly introduce the three components wallet, exchange, merchant; maybe with ASCII diagram version + +// todo: capitalize wallet, exchange, merchant? + ## Withdrawal {#withdrawal} The wallet generates `n > 0` coins `⟨coinᵢ⟩` and requests `n` signatures `⟨blind_sigᵢ⟩` from the exchange, @@ -508,7 +512,7 @@ sig = EdDSA-Sign(reserve.priv, msg) (⟨h_denomᵢ⟩, ⟨planchetᵢ⟩) = planchets for i in 0..n: denomᵢ = Lookup by h_denomᵢ - Check denomᵢ known and not withdrawal-expired + Check denomᵢ known and not withdraw-expired h_planchetᵢ = Hash-Planchet(planchetᵢ, denomᵢ) msg = Gen-Msg(WALLET_RESERVE_WITHDRAW, ( Sum ⟨denomᵢ.value⟩ | Sum ⟨denomᵢ.fee_withdraw⟩ @@ -754,9 +758,40 @@ Check EdDSA-Verify(exchange.pub, msg, sig) ## Refresh {#refresh} -// todo: add introductory text +The wallet obtains `n` new coins `⟨coinᵢ⟩` of denominations `⟨denomᵢ⟩` +in exchange for one old `coin` of denomination `denom` from the exchange. +There are two reasons why a wallet needs to do this: + +1. Obtaining unlinkable change after using only a part of the coin's value during a payment (cf. {{payment}}) or deposit (cf. {{deposit}}), +i.e. where `contribution <= denom.value` +2. Renewing a coin before it deposit-expires. + +The sum of the refresh fee of `denom` and the new denominations' values and withdrawal fees (defined by the exchange) +must be smaller or equal to the residual value of the old `coin`. + +The private key of each new coin candidate `⟨coinₖᵢ.priv⟩` is transitively derived from the old coin's private key `coin.priv` +via a secret `⟨sharedₖᵢ⟩` according to `Refresh-Derive`. +The secret is regeneratable with the knowledge of `coin.priv` via the link protocol (cf. {{link}}). +The derivation ensures that ownership of coins (knowledge of the private key) is correctly transferred, +and thereby that value transfer among untrusted parties can only happen via payment and deposit, not via refresh. -// todo: factor out Derive (from shared secret onwards) +~~~ +Refresh-Derive(shared, denom) = + planchet_seed = HKDF(uint32(i), shared, "taler-coin-derivation", 64) + blind_secret = HKDF("bks", planchet_seed, "", 32) + coin.priv = HKDF("coin", planchet_seed, "", 32) + coin.pub = EdDSA-GetPub(coin.priv) + planchet = RSA-FDH-Blind(SHA-512(coin.pub), blind_secret, denomᵢ.pub) + h_planchet = Hash-Planchet(planchet, denomᵢ) + return (coin, blind_secret, planchet, h_planchet) +~~~ + +Taler uses a cut-and-choose protocol with the fixed parameter `κ=3` to enforce correct derivation +(in (κ-1)/κ, i.e. 2/3, of the cases, making income concealment for tax evasion purposes unpractical). +Refreshing consists of two parts: + +1. Melting of the old coin and commiting to κ batches of blinded planchet candidates +2. Revelation of κ-1 secrets `⟨revealed_seedₖ⟩` to prove the proper construction of the (revealed) batches of blinded planchet candidates. ~~~ wallet exchange @@ -822,12 +857,7 @@ for k in 0..κ: for i in 0..n: transferₖᵢ.pub = EdDSA-GetPub(transferₖᵢ.priv) sharedₖᵢ = ECDH-EdDSA(transferₖᵢ.priv, coin.pub) - planchet_seedₖᵢ = HKDF(uint32(i), sharedₖᵢ, "taler-coin-derivation", 64) - blind_secretₖᵢ = HKDF("bks", planchet_seedₖᵢ, "", 32) - coinₖᵢ.priv = HKDF("coin", planchet_seedₖᵢ, "", 32) - coinₖᵢ.pub = EdDSA-GetPub(coinₖᵢ.priv) - planchetₖᵢ = RSA-FDH-Blind(SHA-512(coinₖᵢ.pub), blind_secretₖᵢ, denomᵢ.pub) - h_planchetₖᵢ = Hash-Planchet(planchetₖᵢ, denomᵢ) + (coinₖᵢ, blind_secretₖᵢ, planchetₖᵢ, h_planchetₖᵢ) = Refresh-Derive(sharedₖᵢ, denomᵢ) h_planchetsₖ = SHA-512( ⟨h_planchetₖᵢ⟩ ) value = coin.denom.fee_refresh + Sum ⟨denomᵢ.value⟩ + Sum ⟨denomᵢ.fee_withdraw⟩ commitment = SHA-512( refresh_seed | uint256(0x0) | coin.pub | value @@ -853,7 +883,7 @@ see TEH_handler_melt (E1) gamma selection and coin signing (exchange) denom = Lookup by coin.h_denom -Check denom known and not refresh-expired +Check denom known and not deposit-expired Check RSA-FDH-Verify(SHA-512(coin.pub), coin.sig, denom.pub) Check coin.pub known and dirty (⟨h_denomᵢ⟩, ⟨planchetₖᵢ⟩, ⟨transferₖᵢ.pub⟩)) = planchets @@ -924,12 +954,7 @@ for k in 0..κ and k != ɣ: for i in 0..n: transferₖᵢ.pub = EdDSA-GetPub(transferₖᵢ.priv) sharedₖᵢ = ECDH-EdDSA(transferₖᵢ.priv, coin.pub) - planchet_seedₖᵢ = HKDF(uint32(i), sharedₖᵢ, "taler-coin-derivation", 64) - blind_secretₖᵢ = HKDF("bks", planchet_seedₖᵢ, "", 32) - coinₖᵢ.priv = HKDF("coin", planchet_seedₖᵢ, "", 32) - coinₖᵢ.pub = EdDSA-GetPub(coinₖᵢ.priv) - planchetₖᵢ = RSA-FDH-Blind(SHA-512(coinₖᵢ.pub), blind_secretₖᵢ, denomᵢ.pub) - h_planchetₖᵢ = Hash-Planchet(planchetₖᵢ, denomᵢ) + (_, _, _, h_planchetₖᵢ) = Refresh-Derive(sharedₖᵢ, denomᵢ) h_planchetsₖ = SHA-512( ⟨h_planchetₖᵢ⟩ ) value = coin.denom.fee_refresh + Sum ⟨denomᵢ.value⟩ + Sum ⟨denomᵢ.fee_withdraw⟩ commitment' = SHA-512( refresh_seed | uint256(0x0) | coin.pub | value @@ -1029,12 +1054,7 @@ for i in 0..n: for k in 0..κ: for i in 0..n: sharedₖᵢ = ECDH-EdDSA(coin.priv, transferₖᵢ.pub) - planchet_seedₖᵢ = HKDF(uint32(i), sharedₖᵢ, "taler-coin-derivation", 64) - blind_secretₖᵢ = HKDF("bks", planchet_seedₖᵢ, "", 32) - coinₖᵢ.priv = HKDF("coin", planchet_seedₖᵢ, "", 32) - coinₖᵢ.pub = EdDSA-GetPub(coinₖᵢ.priv) - planchetₖᵢ = RSA-FDH-Blind(SHA-512(coinₖᵢ.pub), blind_secretₖᵢ, denomᵢ.pub) - h_planchetₖᵢ = Hash-Planchet(planchetₖᵢ, denomᵢ) + (coinₖᵢ, blind_secretₖᵢ _, h_planchetₖᵢ) = Refresh-Derive(sharedₖᵢ, denomᵢ) h_planchetsₖ = SHA-512( ⟨h_planchetₖᵢ⟩ ) value = coin.denom.fee_refresh + Sum ⟨denomᵢ.value⟩ + Sum ⟨denomᵢ.fee_withdraw⟩ commitment = SHA-512( refresh_seed | uint256(0x0) | coin.pub | value diff --git a/draft-guetschow-taler-protocol.xml b/draft-guetschow-taler-protocol.xml @@ -431,6 +431,8 @@ Check-Subtract(value, subtrahend) = </section> <section anchor="procotol"> <name>The Taler Crypto Protocol</name> + <t>// todo: briefly introduce the three components wallet, exchange, merchant; maybe with ASCII diagram version</t> + <t>// todo: capitalize wallet, exchange, merchant?</t> <section anchor="withdrawal"> <name>Withdrawal</name> <t>The wallet generates <tt>n &gt; 0</tt> coins <tt>⟨coinᵢ⟩</tt> and requests <tt>n</tt> signatures <tt>⟨blind_sigᵢ⟩</tt> from the exchange, @@ -509,7 +511,7 @@ sig = EdDSA-Sign(reserve.priv, msg) (⟨h_denomᵢ⟩, ⟨planchetᵢ⟩) = planchets for i in 0..n: denomᵢ = Lookup by h_denomᵢ - Check denomᵢ known and not withdrawal-expired + Check denomᵢ known and not withdraw-expired h_planchetᵢ = Hash-Planchet(planchetᵢ, denomᵢ) msg = Gen-Msg(WALLET_RESERVE_WITHDRAW, ( Sum ⟨denomᵢ.value⟩ | Sum ⟨denomᵢ.fee_withdraw⟩ @@ -700,7 +702,7 @@ h_wire = HKDF(info.wire.wire_salt, info.wire.payto, "merchant-wire-signature", 6 for i in 0..n: coinᵢ = depositᵢ.coin denomᵢ = Lookup by coinᵢ.h_denom - Check denomᵢ known and not deposit-expired // todo: check could be included in Denom-Lookup + Check denomᵢ known and not deposit-expired totalᵢ = depositᵢ.contribution + denomᵢ.fee_deposit msgᵢ = Gen-Msg(WALLET_COIN_DEPOSIT, ( h_contract | uint256(0x0) @@ -737,8 +739,44 @@ Check EdDSA-Verify(exchange.pub, msg, sig) </section> <section anchor="refresh"> <name>Refresh</name> - <t>// todo: add introductory text</t> - <t>// todo: factor out Derive (from shared secret onwards)</t> + <t>The wallet obtains <tt>n</tt> new coins <tt>⟨coinᵢ⟩</tt> of denominations <tt>⟨denomᵢ⟩</tt> +in exchange for one old <tt>coin</tt> of denomination <tt>denom</tt> from the exchange. +There are two reasons why a wallet needs to do this:</t> + <ol spacing="normal" type="1"><li> + <t>Obtaining unlinkable change after using only a part of the coin's value during a payment (cf. <xref target="payment"/>) or deposit (cf. <xref target="deposit"/>), +i.e. where <tt>contribution &lt;= denom.value</tt></t> + </li> + <li> + <t>Renewing a coin before it deposit-expires.</t> + </li> + </ol> + <t>The sum of the refresh fee of <tt>denom</tt> and the new denominations' values and withdrawal fees (defined by the exchange) +must be smaller or equal to the residual value of the old <tt>coin</tt>.</t> + <t>The private key of each new coin candidate <tt>⟨coinₖᵢ.priv⟩</tt> is transitively derived from the old coin's private key <tt>coin.priv</tt> +via a secret <tt>⟨sharedₖᵢ⟩</tt> according to <tt>Refresh-Derive</tt>. +The secret is regeneratable with the knowledge of <tt>coin.priv</tt> via the link protocol (cf. <xref target="link"/>). +The derivation ensures that ownership of coins (knowledge of the private key) is correctly transferred, +and thereby that value transfer among untrusted parties can only happen via payment and deposit, not via refresh.</t> + <artwork><![CDATA[ +Refresh-Derive(shared, denom) = + planchet_seed = HKDF(uint32(i), shared, "taler-coin-derivation", 64) + blind_secret = HKDF("bks", planchet_seed, "", 32) + coin.priv = HKDF("coin", planchet_seed, "", 32) + coin.pub = EdDSA-GetPub(coin.priv) + planchet = RSA-FDH-Blind(SHA-512(coin.pub), blind_secret, denomᵢ.pub) + h_planchet = Hash-Planchet(planchet, denomᵢ) + return (coin, blind_secret, planchet, h_planchet) +]]></artwork> + <t>Taler uses a cut-and-choose protocol with the fixed parameter <tt>κ=3</tt> to enforce correct derivation +(in (κ-1)/κ, i.e. 2/3, of the cases, making income concealment for tax evasion purposes unpractical). +Refreshing consists of two parts:</t> + <ol spacing="normal" type="1"><li> + <t>Melting of the old coin and commiting to κ batches of blinded planchet candidates</t> + </li> + <li> + <t>Revelation of κ-1 secrets <tt>⟨revealed_seedₖ⟩</tt> to prove the proper construction of the (revealed) batches of blinded planchet candidates.</t> + </li> + </ol> <artwork><![CDATA[ wallet exchange Knows ⟨denomᵢ⟩ Knows ⟨denomᵢ.priv⟩ @@ -788,12 +826,7 @@ for k in 0..κ: for i in 0..n: transferₖᵢ.pub = EdDSA-GetPub(transferₖᵢ.priv) sharedₖᵢ = ECDH-EdDSA(transferₖᵢ.priv, coin.pub) - planchet_seedₖᵢ = HKDF(uint32(i), sharedₖᵢ, "taler-coin-derivation", 64) - blind_secretₖᵢ = HKDF("bks", planchet_seedₖᵢ, "", 32) - coinₖᵢ.priv = HKDF("coin", planchet_seedₖᵢ, "", 32) - coinₖᵢ.pub = EdDSA-GetPub(coinₖᵢ.priv) - planchetₖᵢ = RSA-FDH-Blind(SHA-512(coinₖᵢ.pub), blind_secretₖᵢ, denomᵢ.pub) - h_planchetₖᵢ = Hash-Planchet(planchetₖᵢ, denomᵢ) + (coinₖᵢ, blind_secretₖᵢ, planchetₖᵢ, h_planchetₖᵢ) = Refresh-Derive(sharedₖᵢ, denomᵢ) h_planchetsₖ = SHA-512( ⟨h_planchetₖᵢ⟩ ) value = coin.denom.fee_refresh + Sum ⟨denomᵢ.value⟩ + Sum ⟨denomᵢ.fee_withdraw⟩ commitment = SHA-512( refresh_seed | uint256(0x0) | coin.pub | value @@ -811,7 +844,7 @@ Persist (coin.denom.pub, ...) // todo: double-check (E1) gamma selection and coin signing (exchange) denom = Lookup by coin.h_denom -Check denom known and not refresh-expired +Check denom known and not deposit-expired Check RSA-FDH-Verify(SHA-512(coin.pub), coin.sig, denom.pub) Check coin.pub known and dirty (⟨h_denomᵢ⟩, ⟨planchetₖᵢ⟩, ⟨transferₖᵢ.pub⟩)) = planchets @@ -865,12 +898,7 @@ for k in 0..κ and k != ɣ: for i in 0..n: transferₖᵢ.pub = EdDSA-GetPub(transferₖᵢ.priv) sharedₖᵢ = ECDH-EdDSA(transferₖᵢ.priv, coin.pub) - planchet_seedₖᵢ = HKDF(uint32(i), sharedₖᵢ, "taler-coin-derivation", 64) - blind_secretₖᵢ = HKDF("bks", planchet_seedₖᵢ, "", 32) - coinₖᵢ.priv = HKDF("coin", planchet_seedₖᵢ, "", 32) - coinₖᵢ.pub = EdDSA-GetPub(coinₖᵢ.priv) - planchetₖᵢ = RSA-FDH-Blind(SHA-512(coinₖᵢ.pub), blind_secretₖᵢ, denomᵢ.pub) - h_planchetₖᵢ = Hash-Planchet(planchetₖᵢ, denomᵢ) + (_, _, _, h_planchetₖᵢ) = Refresh-Derive(sharedₖᵢ, denomᵢ) h_planchetsₖ = SHA-512( ⟨h_planchetₖᵢ⟩ ) value = coin.denom.fee_refresh + Sum ⟨denomᵢ.value⟩ + Sum ⟨denomᵢ.fee_withdraw⟩ commitment' = SHA-512( refresh_seed | uint256(0x0) | coin.pub | value @@ -940,12 +968,7 @@ for i in 0..n: for k in 0..κ: for i in 0..n: sharedₖᵢ = ECDH-EdDSA(coin.priv, transferₖᵢ.pub) - planchet_seedₖᵢ = HKDF(uint32(i), sharedₖᵢ, "taler-coin-derivation", 64) - blind_secretₖᵢ = HKDF("bks", planchet_seedₖᵢ, "", 32) - coinₖᵢ.priv = HKDF("coin", planchet_seedₖᵢ, "", 32) - coinₖᵢ.pub = EdDSA-GetPub(coinₖᵢ.priv) - planchetₖᵢ = RSA-FDH-Blind(SHA-512(coinₖᵢ.pub), blind_secretₖᵢ, denomᵢ.pub) - h_planchetₖᵢ = Hash-Planchet(planchetₖᵢ, denomᵢ) + (coinₖᵢ, blind_secretₖᵢ _, h_planchetₖᵢ) = Refresh-Derive(sharedₖᵢ, denomᵢ) h_planchetsₖ = SHA-512( ⟨h_planchetₖᵢ⟩ ) value = coin.denom.fee_refresh + Sum ⟨denomᵢ.value⟩ + Sum ⟨denomᵢ.fee_withdraw⟩ commitment = SHA-512( refresh_seed | uint256(0x0) | coin.pub | value @@ -1068,7 +1091,7 @@ if ⟨blind_sigᵢ⟩ returned: <refcontent>National Institute of Standards and Technology (U.S.)</refcontent> </reference> </references> - <?line 1079?> + <?line 1099?> <section anchor="change-log"> <name>Change log</name> @@ -1081,199 +1104,214 @@ Education and Research (BMBF) within the project Concrete Contracts.</t> </section> </back> <!-- ##markdown-source: -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 -dCIx0OsEQZdbdpJMtHevtmnwlECErlJSwD7A2sezplihhlu3Hudj0WIO+uTu -gs4oyjy5bJ0fDzCjg1UTcJoldEotJ8WCbqK16kxqpxzILOmrc7aIujT6aNH3 -FYLuA3AHhCCY6b0PNH8FRHNDbGb/9sjBg0usyQ4fbcP/L472jQB7Ecw2rbDx -xvfqaXTKw+8va2bDW8hdLYuRdYKVdNNqqdXrz1m+saTDgp6KKE3CbNJ8IzDs -e5dN0sCSLnNyV/CxaeHCgxF9BWU0YT5q7uoqAkRxpNCsNylDtyFGoGUlpHVD -zyEJKGm4TIyWzbloKYt7ykSuMjjCIK8gD9eZs3xjxWVeTRhgRVpFzRcG8bHL -HkWt3PzjiMRVhOFu7i+JHM0HmbkClkWpWkEtW/N84XNLArCQG3WSVgmAKMPo -L5eA68z5/us0k7RGbpYZuVlwgaLA70/FtrJMoGKtBp5bUDm4SufDVpoJWp1D -zN+RZw1k4m194+uapc9VMTDpjPxZdeZPmBEdiojh28ye0xCTy3IOM0tSaZrz -sFA8mptKlrYNHciZw968UHyOtZ4iPCEvm4oRMU2KsTpth7vhVCC6VCrZsPai -c0zn0rG7vop4zarKQUbFXGlER/Q4vmYH4Bv5E1lLKVBDG6OiRLJu8dDFkG+I -4zh9l2rLMqxtSthaFqrYag2zCWpDNZY5aDkappRlQhkmwzHxUAMeEZS1oIrF -Fd8Az8hjX7JSAGPwM9/L6NAfxFINxSxzDK3JLyKgNv0JLPWVLDHqIKlVDlaT -XTrrdbamBnLwWV6YJ7OuOc/p4kh8f8gggwjZg0gY8MYlN6mvloa3bfqggg2J -C6U7WjdCBwFmffVZanqahuJL7VxpllRNAAsGUDrXAEQLsQDpN8fPDrWTUCvn -zQ52jzBVf9LZfnZ4crS1fYLQ6tazichCLDWTiZxn8XMxu0VYK7JqRY+onFYr -41giGTc/Tp7tPNuUWxOOMHuiqITOaNGN7/NNkrE77aFaAdb3PRTFbeDyYx6I -F3ZAtK+3gnrTPJ1xznXCBXOkKqej3vVjJgMs8CMSNZ6MetvFWTTaGm804xFX -QmAkViMq2Tg7cOPTHR/f74NaaDYfptJUeVKqXoYHc8QmPBaVj4r0Xykji/U8 -nZ3d58+O90/q0kDZBt1KqVNLWS68ibwhM6h6dVLk35YzZLqjbqmlzbxZkrti -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 +kQAA -->