From 93295976d799819eef6bddfb126e0402440a179a Mon Sep 17 00:00:00 2001 From: "David A. Harding" Date: Sun, 10 May 2020 11:07:33 -0400 Subject: [PATCH 1/6] Newsletters: add 97 (2020-05-13) --- .../en/newsletters/2020-05-13-newsletter.md | 161 ++++++++++++++++++ ...05-fake-coinjoin-trick-hardware-wallet.dot | 55 ++++++ ...ake-coinjoin-trick-hardware-wallet.dot.png | Bin 0 -> 7468 bytes ...ake-coinjoin-trick-hardware-wallet.dot.svg | 157 +++++++++++++++++ 4 files changed, 373 insertions(+) create mode 100644 _posts/en/newsletters/2020-05-13-newsletter.md create mode 100644 img/posts/2020-05-fake-coinjoin-trick-hardware-wallet.dot create mode 100644 img/posts/2020-05-fake-coinjoin-trick-hardware-wallet.dot.png create mode 100644 img/posts/2020-05-fake-coinjoin-trick-hardware-wallet.dot.svg diff --git a/_posts/en/newsletters/2020-05-13-newsletter.md b/_posts/en/newsletters/2020-05-13-newsletter.md new file mode 100644 index 0000000000..fe789ee0e6 --- /dev/null +++ b/_posts/en/newsletters/2020-05-13-newsletter.md @@ -0,0 +1,161 @@ +--- +title: 'Bitcoin Optech Newsletter #97' +permalink: /en/newsletters/2020/05/13/ +name: 2020-05-13-newsletter +slug: 2020-05-13-newsletter +type: newsletter +layout: newsletter +lang: en +--- +This week's newsletter describes a proposal that taproot signatures make +an additional commitment to spent scriptPubKeys and includes our regular +sections with the summary of a Bitcoin Core PR Review Club meeting, a +list of releases and release candidates, and descriptions of notable +changes to popular Bitcoin infrastructure software. + +## Action items + +*None this week.* + +## News + +- **Request for an additional taproot signature commitment:** an idea + previously discussed[^increase-quote] among Bitcoin experts would be allowing + hardware wallets to automatically sign any transaction as long as it + provably increases the user's balance. This could make it easy for + the hardware wallet to automatically participate in [coinjoin][topic + coinjoin] transactions or LN payment routing. + + However, several years ago, Greg Sanders [described][sanders safe + automation] an attack that could be used to trick a hardware wallet + into thinking that its balance was increasing when it was actually + decreasing. An attacker would create an unsigned transaction + spending two of the hardware wallet's inputs to two outputs---one + output paying the wallet slightly more than the larger of the + two inputs and the other output paying the attacker. The attacker + would ask for a signature on the first input (without disclosing that the + second input belonged to the wallet); the wallet would sign that + input after verifying that the output paying back into the wallet + was larger than the input. Then the attacker would ask for a + signature for the second input---pretending that this was for a + completely different transaction---causing the wallet to also sign + the second input after again verifying that there was an output + larger than the input. Finally, the attacker would put both signatures + into a final transaction and broadcast it, stealing money from the + wallet. Sanders's description of the problem also described a + potential solution, but it requires that wallets know the + scriptPubKeys for each previous output being spent in the + transaction. + + ![Illustration of using a fake coinjoin to trick a hardware wallet into losing funds](/img/posts/2020-05-fake-coinjoin-trick-hardware-wallet.dot.png) + + Last week, Andrew Kozlik [posted][kozlik spk commit] to the + Bitcoin-Dev mailing list to request that [taproot][topic taproot] + signatures directly commit to the scriptPubKey of every input's + previous output. This commitment is already made indirectly by + committing to the outpoints of all the transaction's + inputs,[^outpoint-txid-spk] but making it directly in the + transaction digest would allow a [Partially Signed Bitcoin + Transaction][topic psbt] (PSBT) to trustlessly provide signers with + a copy of all scriptPubKeys being spent in a transaction. The scriptPubKeys in the PSBT + wouldn't require any trust because, if any of the scriptPubKeys were missing + or modified, the signer's commitment to the scriptPubKeys would be + invalid, making the transaction invalid. This would allow hardware + wallets to use the solution described by Sanders in 2017 without + needing to trust an external program to provide correct copies of + the scriptPubKeys being spent. + +## Bitcoin Core PR Review Club + +_In this monthly section, we summarize a recent Bitcoin Core PR Review +Club meeting, highlighting some of the important questions and answers. +Click on a question below to see a summary of the answer from the +meeting._ + +FIXME:jnewbery or jonatack + +{% include functions/details-list.md + q0="FIXME" + a0="FIXME" + + q1="FIXME1" + a1="FIXME" +%} + +## Releases and release candidates + +*New releases and release candidates for popular Bitcoin infrastructure +projects. Please consider upgrading to new releases or helping to test +release candidates.* + +- [Eclair 0.4][] is a new major version release that upgrades Eclair's + major dependencies, adds support for the latest version of Bitcoin + Core, and deprecates Eclair Node GUI (instead users are encouraged to + run [Phoenix][] or [Eclair Mobile][]). + +- [C-Lightning 0.8.2.1][] is a new maintenance release that fixes an + incompatibility in large channels ("wumbo channels") between + C-Lightning and Eclair. See the linked release notes for details. + +- [Bitcoin Core 0.20.0rc1][bitcoin core 0.20.0] is a release candidate + for the next major version of Bitcoin Core. + +## Notable code and documentation changes + +*Notable changes this week in [Bitcoin Core][bitcoin core repo], +[C-Lightning][c-lightning repo], [Eclair][eclair repo], [LND][lnd repo], +[Rust-Lightning][rust-lightning repo], [libsecp256k1][libsecp256k1 repo], +[Bitcoin Improvement Proposals (BIPs)][bips repo], and [Lightning +BOLTs][bolts repo].* + +*Note: the commits to Bitcoin Core mentioned below apply to its master +development branch and so those changes will likely not be released +until version 0.21, about six months after the release of the upcoming +version 0.20.* + +- [Bitcoin Core #16224][] displays all of the GUI's translated error + messages in both the locale's language and in English. This can help + users find help and quickly describe the problem to developers. + Additionally, the English version of the error message is now what + is written to the debug log, again to make it easier for developers + to comprehend the problem and provide assistance. + +- [C-Lightning #3659][] Watchtowers attempt 3: the full channelding FIXME:moneyball + +- [Rust-Lightning #539][] Require static_remotekey FIXME:dongcarl + +- [LND #4139][] extends the `gettransactions` and `listsweeps` RPCs to + allow passing start and end block heights to only retrieve + transactions confirmed within that block range. A value of `-1` for + the end height may be used to also list unconfirmed transactions. + +## Footnotes + +[^increase-quote]: + "You keep the wallet connected to the computer, and the connected + computer runs a watch-only lightning wallet, and then communicates + with the hardware wallet for signatures on transactions that + strictly increase the balance of your channel." ---Excerpt from the + rough [transcript][snigirev ref] of a talk about hardware wallets by + Stephan Snigirev; transcript by Bryan Bishop + +[^outpoint-txid-spk]: + In the existing [BIP341][] specification of [taproot][topic + taproot], each input commits to the outpoints of every input + included in the transaction. Outpoints are the txid + and output index (vout) of the output being spent. Txids are a hash + of most parts of the transaction containing that output. So a + commitment to an outpoint is a commitment to a txid which is a + commitment to the previous output (including the output's + scriptPubKey). + +{% include references.md %} +{% include linkers/issues.md issues="16224,3659,539,4139" %} +[bitcoin core 0.20.0]: https://bitcoincore.org/bin/bitcoin-core-0.20.0 +[c-lightning 0.8.2.1]: https://github.com/ElementsProject/lightning/releases/tag/v0.8.2.1 +[eclair 0.4]: https://github.com/ACINQ/eclair/releases/tag/v0.4 +[phoenix]: https://phoenix.acinq.co/ +[eclair mobile]: https://github.com/ACINQ/eclair-mobile +[sanders safe automation]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-August/014843.html +[kozlik spk commit]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-April/017801.html +[snigirev ref]: https://diyhpl.us/wiki/transcripts/austin-bitcoin-developers/2019-06-29-hardware-wallets/ diff --git a/img/posts/2020-05-fake-coinjoin-trick-hardware-wallet.dot b/img/posts/2020-05-fake-coinjoin-trick-hardware-wallet.dot new file mode 100644 index 0000000000..4cdf22aa8b --- /dev/null +++ b/img/posts/2020-05-fake-coinjoin-trick-hardware-wallet.dot @@ -0,0 +1,55 @@ +digraph fake_coinjoin { + +rankdir=LR + +node [ shape = "box" ]; +edge [ style = "invis" ]; + + +subgraph cluster_fake1 { + fake1_in_label [ label = "Inputs", shape = "none", height=0.1 ]; + fake1_out_label [ label = "Outputs", shape = "none", height=0.1 ]; + fake1_in_mine [ label = "Mine\n1.0 BTC", style = "filled" fillcolor = "grey" ] + fake1_out_other [ label = "Other\n0.9 BTC" ]; + fake1_in_other [ label = "Other\n1.0 BTC" ]; + fake1_out_mine [ label = "Mine\n1.1 BTC", style = "filled" fillcolor = "grey" ]; + fake1_in_mine -> fake1_out_other; + fake1_in_other -> fake1_out_mine; + + label = "Perceieved transaction 1"; +} + +fake1_out_mine -> fake2_in_mine; +fake1_out_other -> fake2_in_other; + +subgraph cluster_fake2 { + fake2_in_label [ label = "Inputs", shape = "none", height=0.1 ]; + fake2_out_label [ label = "Outputs", shape = "none", height=0.1 ]; + fake2_in_mine [ label = "Mine\n1.0 BTC", style = "filled", fillcolor = "grey" ] + fake2_out_other [ label = "Other\n0.9 BTC" ]; + fake2_in_other [ label = "Other\n1.0 BTC" ]; + fake2_out_mine [ label = "Mine\n1.1 BTC", style = "filled", fillcolor = "grey" ]; + fake2_in_other -> fake2_out_other; + fake2_in_mine -> fake2_out_mine; + + label = "Perceieved transaction 2"; +} + +fake2_out_mine -> actual_in_mine1; +fake2_out_other -> actual_in_mine2; + +subgraph cluster_actual { + actual_in_label [ label = "Inputs", shape = "none", height=0.1 ]; + actual_out_label [ label = "Outputs", shape = "none", height=0.1 ]; + actual_in_mine1 [ label = "Mine\n1.0 BTC", style = "filled", fillcolor = "grey" ] + actual_out_other [ label = "Other\n0.9 BTC" ]; + actual_in_mine2 [ label = "Mine\n1.0 BTC", style = "filled", fillcolor = "grey"]; + actual_out_mine [ label = "Mine\n1.1 BTC", style = "filled", fillcolor = "grey" ]; + actual_in_mine1 -> actual_out_mine; + actual_in_mine2 -> actual_out_other; + + label = "Actual transaction"; +} + +fake1_in_label -> fake1_out_label -> fake2_in_label -> fake2_out_label -> actual_in_label -> actual_out_label; +} diff --git a/img/posts/2020-05-fake-coinjoin-trick-hardware-wallet.dot.png b/img/posts/2020-05-fake-coinjoin-trick-hardware-wallet.dot.png new file mode 100644 index 0000000000000000000000000000000000000000..4836fe676afc6f840c269f01df6e60b41467b2be GIT binary patch literal 7468 zcma)>by!tRyT;e1yF*gC^92N?5oxwaZaPFlkd#i5?k-7@l15UxHWC67(wpwsbjLy8 z`s#e={I#z=*UXxEX3hOPzqwbaDp(F1gB$|@0Bi+$88rYvWCQ>ZI@)~$P>wUfeE)-B zsw5`^+yzGuv;qL-s)CG^hTHURhPx!u>Rr#gr#(6>i1X z@czBg?Zb1e_qflhc@eMI#*Y;WOHTsbeFVH>9@tuI$xO6xD~P_TfFA7CA=%QHxSfv;q%<-Q-_F>r(CZcPgA=F%CyzYDE2-NjvI zG9dGiNsrN&sMw@+EOv6~zsozABBLfXSC&UB&S)J@=1mHNChjzz{nVed?Hx_iOR$tnPO3SqG8#uNjx zbCOwDr-V(@mXvHqB=-hUsJ|MO?ek4OkpIG$;?b4p-x4uLK^JYx-fBUdp;zd$RS2oA zw79H|B|pWF+EOeZe2O*ttwLb(8|30B@zOuUkddQb(=~;6ESz_D0x5v^bQY3yKnJ^A z{?I88&5W|>_9h!m;xiC<()?g~3$kqlt(rM2FVTG(o(88cWA4F#vZcKySq&++dxR-V z@B->MMdJ!hc?SO!+3-PPX{rBhkMPoO^o-a>8*^O8+DS0|&dICEZdjL5#GJKTd}YZ* z`IeHel=3*;QhGb2P4NEklkMxnD21LcJDoiM<�qNRMObiMaYOUm&5jb@6ZZ9Vj$Hk)DN!SG_ z-#uOuL}AHBnpHOzbQ?_6Z2vhsr6N$ESqj4HKB)YniL?@0xpW(rWoAlg?=6OnWnquQVuZi3b~<(r*g^f2h9|4^~4_4u%tm#r3er!Tw* zJXOv7%CAgcTZOnT7PGAeW`NKASYbY_AxnU?Go`7s7f?N%^AG;&eJ-n5#h2o{+ia*y z4p^3x38)$&`>ExQd`blm*+o&RYZ^z-;NFe&C6_}_1*05f0vzS5em-`59kvi;N%d4Y zbfpwRI{S?1MT=fcN=k~G@`3Z}lNE6J9YgVdf6=V9_Q6BuRduVSmUA6l%8uYUbPXv z=*B5920DziIIdpt18!IfbJ{9pRq}{Ln&S1bBRg134;|*DL4x>`FM>TF?Ry3+BP#;_ zcS;W20keZQNt=p%F`6}Kc)zi$8rDQ@`@tKd@94#?*R4;0?3bq(9hpzlnq*^4tcO1P zULScLd1(M=VQ;_j5phzuj3(BNYju{!z2)FH5IfqyJU6`tHnhKg@DG{??|+0iEcByO zwE4iVKMb=@ZLMJd55C-WYTrbzTy~XE;%j=WfAFEl%x>K1dS-!ls=WUU)aD-^!3%YS zijMC@zNxJwgBlns3*>4Zk-1-vZv0b8 z`Lme(Q{x}~|F7bsRIu{ZEY-$7ASKMn{0e9DOf6z#FcglYLz_aF-{PGh@I-ePbM~c| zcmG_MG!Poa*lj#QLr1`Sa^s8$fWpl&+&5oRb%_ zbHCz`giO&&(>Wn8n?mYt>o<7fZVF;e_YNQv9`Z=HtR2NAK4=5LzbK-XbD-kPJwMQ=exawR)uY^d+wrBN`eRU1M*7{63!^9kvd3 zZcnkY7dh8^im$G|ot1`Fs+Iy2h?ExEM!?fDHa0yi4far~nxakzYOGBLrO}pya}=+x-#5$;3|X7@ zbm-aoLPwYIB#zTALSYN8fqo-!91djeC6%`3R%DtDJX+;Mk z`%nI8t0vN^DGa2W&Ognou_@ip6W2&RWg{z|rI0xQ7gcx=m;4;9d`R{`xZzlXlwTBuL#iCgiRZ!o*_1>a9 z5U8$t)D8uyRGVJ>xE5_Di*LqNzBSqO&1Zb>+B!{qHC5VJ!}fT>{DO}|YBWjjn;bE@ zhwKAhyzpGS5n57r*jkUrT*qPu#egElG$sqt6bfTx%kL92UsV0h93?I(04!a0Ap5~( z1>0}x33r+YK^vsRb$Im>B&zkDkDkiQ1QK~5+ksQ~xE!eUFC~EbJ6G-RQGyo5NeIC8 zRf!T8wfkt$-`xZ}9&*j(f+{4?0M+`t47ZOZ5A$wU#y4F-wSr#IYyQj|mfPp~H&@Da zVIjY;3;2ppjQI$oz4?2%}Wt*LB5l+k_Yl)OTlZR`2 zxo_8SOY0`+Hll?V#z>bh451$lA_dcs$nWf-0sA|c*$Q&X$FC+1o|(zv`ZxL7BD8Wk z5|+MsjX0O7d7*%smAUS4_Sr!-z-*6VM2^p;FE!~0moy#Q$6@w!Cuyss%uH(SGS_p5 zC>L;hw+e_~spnzZGf>k~o83D%S_6?p)MvX183dN`ApwV00Fy{Ncxn(u=J$Q|1*aqv zOl@cND65L{$JJ4hq7Bnzm|3w|0BzXk4=@npG6d22AqfG0Eu62s8Q0JCQpef}bCdoF?W@RZt*!U%Ji{m)@;P8|{SWji~LB3R*MOo$jc2r=(OC6TdXv@zzR z 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 oM5*EW|NQOnf3v9qR1WU6ciK0dOelW)`59E + + + + + +fake_coinjoin + + +cluster_fake1 + +Perceieved transaction 1 + + +cluster_fake2 + +Perceieved transaction 2 + + +cluster_actual + +Actual transaction + + + +fake1_in_label +Inputs + + + +fake1_out_label +Outputs + + + + +fake2_in_label +Inputs + + + + +fake1_in_mine + +Mine +1.0 BTC + + + +fake1_out_other + +Other +0.9 BTC + + + + +fake2_in_other + +Other +1.0 BTC + + + + +fake1_in_other + +Other +1.0 BTC + + + +fake1_out_mine + +Mine +1.1 BTC + + + + +fake2_in_mine + +Mine +1.0 BTC + + + + +fake2_out_mine + +Mine +1.1 BTC + + + + +fake2_out_other + +Other +0.9 BTC + + + + +fake2_out_label +Outputs + + + + +actual_in_label +Inputs + + + + +actual_in_mine2 + +Mine +1.0 BTC + + + + +actual_in_mine1 + +Mine +1.0 BTC + + + + +actual_out_mine + +Mine +1.1 BTC + + + + +actual_out_other + +Other +0.9 BTC + + + + +actual_out_label +Outputs + + + + From 035a39945e0b85bd16453fc6bdff754baef08f88 Mon Sep 17 00:00:00 2001 From: John Newbery Date: Mon, 11 May 2020 11:32:33 -0400 Subject: [PATCH 2/6] News: Add external link to review club Q&As --- _includes/functions/details-list.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/_includes/functions/details-list.md b/_includes/functions/details-list.md index 2822de43d5..f4cdc7cae5 100644 --- a/_includes/functions/details-list.md +++ b/_includes/functions/details-list.md @@ -12,13 +12,15 @@ {% for i in (0..9) %} {% capture q %}q{{i}}{% endcapture %} {% capture a %}a{{i}}{% endcapture %} + {% capture al %}a{{i}}link{% endcapture %} + {% capture alink %}{% if include.[al] != nil %}{% endif %}{% endcapture %} {% if include.[q] == nil %}{% break %}{% endif %} {% assign qslug = include.[q] | slugify: 'latin' %} {% if jekyll.environment == "email" %} - - {{include.[q]}}
{{include.[a]}} + - {{include.[q]}}
{{include.[a]}} {{alink}} {% else %} -
{{include.[q]}} - {{include.[a]}} + {{include.[a]}} {{alink}}
{% endif %} {% endfor %} From 27eea65bf2e3fd321c7a064cd6955a37052007d1 Mon Sep 17 00:00:00 2001 From: John Newbery Date: Mon, 11 May 2020 11:33:58 -0400 Subject: [PATCH 3/6] News: Add Review Club to references and issues linkers --- _includes/linkers/issues.md | 12 +++--------- _includes/references.md | 1 + 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/_includes/linkers/issues.md b/_includes/linkers/issues.md index 138eeea15d..7c031ff1e9 100644 --- a/_includes/linkers/issues.md +++ b/_includes/linkers/issues.md @@ -1,14 +1,7 @@ {% capture /dev/null %}