<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated></updated>
  <generator>https://nostr.ae</generator>

  <title>Nostr notes by </title>
  <author>
    <name></name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.ae/npub10r66s2stvnancx9axwnfc5a34asjkwkgmkq7ztm5hf30x7fa4szsv9afdw.rss" />
  <link href="https://nostr.ae/npub10r66s2stvnancx9axwnfc5a34asjkwkgmkq7ztm5hf30x7fa4szsv9afdw" />
  <id>https://nostr.ae/npub10r66s2stvnancx9axwnfc5a34asjkwkgmkq7ztm5hf30x7fa4szsv9afdw</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://nostr.ae/nevent1qqs2eema328hu4m4xat3j483nd3vdn7u7ft3a64en64vxgemndctcvszypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2arq4gy</id>
    
      <title type="html">📅 Original date posted:2021-02-14 📝 Original message:After ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2eema328hu4m4xat3j483nd3vdn7u7ft3a64en64vxgemndctcvszypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2arq4gy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8gpm5sn8kkl7ky49l3u7fyxa5kdukgz6lj5n67srquug4df7nzncefakrp&#39;&gt;nevent1q…akrp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-14&lt;br/&gt;📝 Original message:After off-list discussion with Hugo, I&amp;#39;m convinced that&lt;br/&gt;adding a requirement for signers to derive participant ids is&lt;br/&gt;unnecessary complication that only buys slight convenience for&lt;br/&gt;coordinator, and this is not a net positive tradeoff.&lt;br/&gt;&lt;br/&gt;And since the coordinator can choose to generate unique TOKEN per&lt;br/&gt;participant without participants even knowing about this, there&amp;#39;s&lt;br/&gt;probably no reason to mention this possibility in the spec, either.&lt;br/&gt;&lt;br/&gt;В Sun, 14 Feb 2021 11:37:52 &#43;0100&lt;br/&gt;Dmitry Petukhov &amp;lt;dp at simplexum.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; I think that it is better to issue individual TOKEN for each&lt;br/&gt;&amp;gt; participant. Otherwise it will be possible for one participant to&lt;br/&gt;&amp;gt; attack another (intercept and replace their xpub sent to the&lt;br/&gt;&amp;gt; coordinator).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; It will also be convenient to have a public &amp;#39;participant id&amp;#39;, derived&lt;br/&gt;&amp;gt; from the token. It can be derived from the same token, but with&lt;br/&gt;&amp;gt; different (but fixed) `Pwd`. With unique token per participant, such&lt;br/&gt;&amp;gt; derivation will uniquely identify each participant, so the coordinator&lt;br/&gt;&amp;gt; won&amp;#39;t need to try all the tokens to decrypt the data.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; It will also be easier to deal with more elaborate setups where the&lt;br/&gt;&amp;gt; position of the xpub in the descriptor does matter - for example, with&lt;br/&gt;&amp;gt; miniscript-extended descriptors. With a descriptor template such as&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; `wsh(or(multi(2, &amp;lt;Alice&amp;gt;, &amp;lt;Bob&amp;gt;, &amp;lt;Carol&amp;gt;), older(1000, &amp;lt;Dylan&amp;gt;))`&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The coordinator will be able to store the map between the participant&lt;br/&gt;&amp;gt; labels (Alice, Bob, Carol, Dylan) and their participant ids (and the&lt;br/&gt;&amp;gt; TOKENs). When the data from Alice comes with participant id attached,&lt;br/&gt;&amp;gt; the coordinator will immediately know which TOKEN to use, and which&lt;br/&gt;&amp;gt; place in the descriptor the xpub should be put in.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Of course this is all possible without &amp;#39;participant id&amp;#39; derived from&lt;br/&gt;&amp;gt; token, as long as there&amp;#39;s unique TOKEN per participant - the&lt;br/&gt;&amp;gt; coordinator can always try all the tokens to decrypt the data from&lt;br/&gt;&amp;gt; participant. But implementors will likely invent their own ways to&lt;br/&gt;&amp;gt; introduce &amp;#39;participant id&amp;#39; anyway, as this is more convenient, and it&lt;br/&gt;&amp;gt; might make sense to have this standardized, for interoperability. &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; В Fri, 12 Feb 2021 09:54:57 -0800&lt;br/&gt;&amp;gt; Hugo Nguyen &amp;lt;hugo at nunchuk.io&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; On Fri, Feb 12, 2021 at 9:36 AM Dmitry Petukhov &amp;lt;dp at simplexum.com&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;   &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; If HUMAN_READABLE_TITLE is the additional secret, the user would&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; need to enter it on the device in addition to the nonce, wouldn&amp;#39;t&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; it defeat the advantage in UX that was gained by using&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; (relatively) short nonce ?&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Is 64 bit nonce not enough ?&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;    &lt;br/&gt;&amp;gt; &amp;gt; Good question. If we don&amp;#39;t need the extra entropy, we can fix&lt;br/&gt;&amp;gt; &amp;gt; the HUMAN_READABLE_TITLE string.&lt;br/&gt;&amp;gt; &amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; Something like &amp;#34;No SPOF&amp;#34;. (No Single Point Of Failure).&lt;br/&gt;&amp;gt; &amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; &lt;br/&gt;&amp;gt; &amp;gt;   &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; It seems that to crack this with fixed Pwd and 64 bit nonce, the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; attacker will need to be about 10^15 more powerful than 80Mhz MCU:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; (2^64)/(0.3*10^15)/3600 = 17 hours. I don&amp;#39;t know if 10^15 is&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; realistic scale. Average desktop cpu seems to be about 10^3 more&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; powerful than the mentioned MCU for this task.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Maybe for the UX it would be better to choose the number of rounds&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; to use in PBKDF2, instead of using variable Pwd. Number of rounds&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; will be easier to enter on the device (or just choose it from a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; set of pre-defined values). The more money is at stake, the higher&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; number of rounds could the coordinator choose (taking into account&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; the characteristics of the participant devices)&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;    &lt;br/&gt;&amp;gt; &amp;gt;   &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Or simply allow bigger entropy (more than 6 mnemonic words), if&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; the coordinator feels that 64 bit of entropy is not enough.    &lt;br/&gt;&amp;gt; &amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; That could work. Allowing variable iteration count is probably&lt;br/&gt;&amp;gt; &amp;gt; better UX-wise.&lt;br/&gt;&amp;gt; &amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; Best,&lt;br/&gt;&amp;gt; &amp;gt; Hugo&lt;br/&gt;&amp;gt; &amp;gt; &lt;br/&gt;&amp;gt; &amp;gt;   &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; В Fri, 12 Feb 2021 08:55:55 -0800&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Hugo Nguyen &amp;lt;hugo at nunchuk.io&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;    &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Thanks everyone who has provided inputs so far!&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; This is the new proposal for the encryption aspect of the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; scheme, based on all the feedback.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; The key derivation function would be PBKDF2, with PRF = SHA512.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; This should be readily available on today&amp;#39;s hardware already, as&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; they are used for BIP39.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; DK = PBKDF2(PRF, Password, Salt, c, dkLen)&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; PRF = SHA512&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Pwd = HUMAN_READABLE_TITLE&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Salt = NONCE&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; c = 2048&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; dkLen = 256&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; HUMAN_READABLE_TITLE is in ASCII format, minimum length = 8,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; maximum length = 20.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; NONCE is a 64-bit number.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Reason for going with SHA512 is due to legacy support on some&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; hardware. c=2048 also mimics BIP39. It takes about ~3 seconds to&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; derive the encryption key on a 80Mhz MCU. We feel like this is a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; good enough tradeoff for this use case. The assumption here is&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; that the secure session is only needed temporarily for a few&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; hours, maybe up to one day.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; The Coordinator and Signers agree and exchange these 2 secrets&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; prior to the setup. The NONCE can be converted to either:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; (a) a 6-word phrase using BIP39 wordlist&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; (b) a 20-digit decimal number&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; (c) a QR code&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Depending on the vendor. This flexibility in the data format&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; allows each vendor to customize the UX based on their respective&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; device capabilities.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Best,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Hugo&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; On Thu, Feb 11, 2021 at 8:25 AM Dmitry Petukhov via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;lt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;    &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; В Thu, 11 Feb 2021 05:45:33 -0800&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Hugo Nguyen via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;    &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; ENCRYPTION_KEY = SHA256(SHA256(TOKEN))    &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; This scheme might be vulnerable to rainbow table attack.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;    &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Thank you for pointing this out! Incidentally, Dmitry&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Petukhov also told me the same privately.    &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; My thought was that if TOKEN has the characteristics of a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; password (short ASCII string), then it would be better to use&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; key derivation function designed for passwords, like PBKDF2.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; The counter-argument to this is that this adds another code&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; dependency for vendors, if the device firmware does not&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; already have the required key derivation function.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Maybe this could be solved by going into opposite direction -&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; make the &amp;#34;token&amp;#34; even longer, use the mnemoic.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; The issue is that entering long data of the shared key into&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; the device manually is difficult UX-wise.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Hww vendors that allow to enter custom keys into their device&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; already have to face this issue, and those who allow to enter&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; custom keys via mnemonic probably tackled this somehow.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Maybe the shared key for multisig setup can be entered in the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; same way ? (with maybe additional visual check via some&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; fingerprint).&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Although we would then have another issue of potential&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; confusion between two procedures (entering the main key and&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; entering the shared key for multisig setup), and the measures&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; has to be taken to prevent such confusion.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; The approaches can be combined - specify a key derivation&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; function suitable for passwords; via secure channel, share a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; password and/or the derived key. If hww supports derivation&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; function, it can derive the key from password. If hww supports&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; only keys, the key can be entered raw or via mnemonic.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;    &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;    &lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T20:28:38&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstjtcw0t038l3vss6027watnun9umjtel0wf6c78tz7ws3wgy0kzgzypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2sgqg45</id>
    
      <title type="html">📅 Original date posted:2021-02-12 📝 Original message:В ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstjtcw0t038l3vss6027watnun9umjtel0wf6c78tz7ws3wgy0kzgzypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2sgqg45" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdv0wmxamqpny3xq4u9r4faafcwngytry4grhu4hdzu38ydxrgpwql4t9l7&#39;&gt;nevent1q…t9l7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-12&lt;br/&gt;📝 Original message:В Fri, 12 Feb 2021 18:42:31 &#43;0100&lt;br/&gt;Dmitry Petukhov &amp;lt;dp at simplexum.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Maybe for the UX it would be better to choose the number of rounds to&lt;br/&gt;&amp;gt; use in PBKDF2, instead of using variable Pwd. Number of rounds will be&lt;br/&gt;&amp;gt; easier to enter on the device (or just choose it from a set of&lt;br/&gt;&amp;gt; pre-defined values). The more money is at stake, the higher number of&lt;br/&gt;&amp;gt; rounds could the coordinator choose (taking into account the&lt;br/&gt;&amp;gt; characteristics of the participant devices)&lt;br/&gt;&lt;br/&gt;Or simply allow bigger entropy (more than 6 mnemonic words), if&lt;br/&gt;the coordinator feels that 64 bit of entropy is not enough.
    </content>
    <updated>2023-06-07T20:28:37&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8gpm5sn8kkl7ky49l3u7fyxa5kdukgz6lj5n67srquug4df7nznczypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2hm6vd7</id>
    
      <title type="html">📅 Original date posted:2021-02-14 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8gpm5sn8kkl7ky49l3u7fyxa5kdukgz6lj5n67srquug4df7nznczypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2hm6vd7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsypnpsu67pr0lrcl00zdwr0rmfs4anekugwygp40my7gty3z7q7xsjn0294&#39;&gt;nevent1q…0294&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-14&lt;br/&gt;📝 Original message:I think that it is better to issue individual TOKEN for each&lt;br/&gt;participant. Otherwise it will be possible for one participant to&lt;br/&gt;attack another (intercept and replace their xpub sent to the&lt;br/&gt;coordinator).&lt;br/&gt;&lt;br/&gt;It will also be convenient to have a public &amp;#39;participant id&amp;#39;, derived&lt;br/&gt;from the token. It can be derived from the same token, but with&lt;br/&gt;different (but fixed) `Pwd`. With unique token per participant, such&lt;br/&gt;derivation will uniquely identify each participant, so the coordinator&lt;br/&gt;won&amp;#39;t need to try all the tokens to decrypt the data.&lt;br/&gt;&lt;br/&gt;It will also be easier to deal with more elaborate setups where the&lt;br/&gt;position of the xpub in the descriptor does matter - for example, with&lt;br/&gt;miniscript-extended descriptors. With a descriptor template such as&lt;br/&gt;&lt;br/&gt;`wsh(or(multi(2, &amp;lt;Alice&amp;gt;, &amp;lt;Bob&amp;gt;, &amp;lt;Carol&amp;gt;), older(1000, &amp;lt;Dylan&amp;gt;))`&lt;br/&gt;&lt;br/&gt;The coordinator will be able to store the map between the participant&lt;br/&gt;labels (Alice, Bob, Carol, Dylan) and their participant ids (and the&lt;br/&gt;TOKENs). When the data from Alice comes with participant id attached,&lt;br/&gt;the coordinator will immediately know which TOKEN to use, and which&lt;br/&gt;place in the descriptor the xpub should be put in.&lt;br/&gt;&lt;br/&gt;Of course this is all possible without &amp;#39;participant id&amp;#39; derived from&lt;br/&gt;token, as long as there&amp;#39;s unique TOKEN per participant - the coordinator&lt;br/&gt;can always try all the tokens to decrypt the data from participant. But&lt;br/&gt;implementors will likely invent their own ways to introduce&lt;br/&gt;&amp;#39;participant id&amp;#39; anyway, as this is more convenient, and it might make&lt;br/&gt;sense to have this standardized, for interoperability. &lt;br/&gt;&lt;br/&gt;В Fri, 12 Feb 2021 09:54:57 -0800&lt;br/&gt;Hugo Nguyen &amp;lt;hugo at nunchuk.io&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Fri, Feb 12, 2021 at 9:36 AM Dmitry Petukhov &amp;lt;dp at simplexum.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; If HUMAN_READABLE_TITLE is the additional secret, the user would&lt;br/&gt;&amp;gt; &amp;gt; need to enter it on the device in addition to the nonce, wouldn&amp;#39;t&lt;br/&gt;&amp;gt; &amp;gt; it defeat the advantage in UX that was gained by using (relatively)&lt;br/&gt;&amp;gt; &amp;gt; short nonce ?&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Is 64 bit nonce not enough ?&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;  &lt;br/&gt;&amp;gt; Good question. If we don&amp;#39;t need the extra entropy, we can fix&lt;br/&gt;&amp;gt; the HUMAN_READABLE_TITLE string.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Something like &amp;#34;No SPOF&amp;#34;. (No Single Point Of Failure).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; It seems that to crack this with fixed Pwd and 64 bit nonce, the&lt;br/&gt;&amp;gt; &amp;gt; attacker will need to be about 10^15 more powerful than 80Mhz MCU:&lt;br/&gt;&amp;gt; &amp;gt; (2^64)/(0.3*10^15)/3600 = 17 hours. I don&amp;#39;t know if 10^15 is&lt;br/&gt;&amp;gt; &amp;gt; realistic scale. Average desktop cpu seems to be about 10^3 more&lt;br/&gt;&amp;gt; &amp;gt; powerful than the mentioned MCU for this task.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Maybe for the UX it would be better to choose the number of rounds&lt;br/&gt;&amp;gt; &amp;gt; to use in PBKDF2, instead of using variable Pwd. Number of rounds&lt;br/&gt;&amp;gt; &amp;gt; will be easier to enter on the device (or just choose it from a set&lt;br/&gt;&amp;gt; &amp;gt; of pre-defined values). The more money is at stake, the higher&lt;br/&gt;&amp;gt; &amp;gt; number of rounds could the coordinator choose (taking into account&lt;br/&gt;&amp;gt; &amp;gt; the characteristics of the participant devices)&lt;br/&gt;&amp;gt; &amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; Or simply allow bigger entropy (more than 6 mnemonic words), if&lt;br/&gt;&amp;gt; &amp;gt; the coordinator feels that 64 bit of entropy is not enough.  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; That could work. Allowing variable iteration count is probably better&lt;br/&gt;&amp;gt; UX-wise.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Hugo&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; В Fri, 12 Feb 2021 08:55:55 -0800&lt;br/&gt;&amp;gt; &amp;gt; Hugo Nguyen &amp;lt;hugo at nunchuk.io&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;  &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Thanks everyone who has provided inputs so far!&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; This is the new proposal for the encryption aspect of the scheme,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; based on all the feedback.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; The key derivation function would be PBKDF2, with PRF = SHA512.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; This should be readily available on today&amp;#39;s hardware already, as&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; they are used for BIP39.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; DK = PBKDF2(PRF, Password, Salt, c, dkLen)&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; PRF = SHA512&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Pwd = HUMAN_READABLE_TITLE&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Salt = NONCE&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; c = 2048&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; dkLen = 256&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; HUMAN_READABLE_TITLE is in ASCII format, minimum length = 8,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; maximum length = 20.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; NONCE is a 64-bit number.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Reason for going with SHA512 is due to legacy support on some&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; hardware. c=2048 also mimics BIP39. It takes about ~3 seconds to&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; derive the encryption key on a 80Mhz MCU. We feel like this is a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; good enough tradeoff for this use case. The assumption here is&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; that the secure session is only needed temporarily for a few&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; hours, maybe up to one day.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; The Coordinator and Signers agree and exchange these 2 secrets&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; prior to the setup. The NONCE can be converted to either:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; (a) a 6-word phrase using BIP39 wordlist&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; (b) a 20-digit decimal number&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; (c) a QR code&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Depending on the vendor. This flexibility in the data format&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; allows each vendor to customize the UX based on their respective&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; device capabilities.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Best,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Hugo&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; On Thu, Feb 11, 2021 at 8:25 AM Dmitry Petukhov via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;  &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; В Thu, 11 Feb 2021 05:45:33 -0800&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Hugo Nguyen via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;  &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; ENCRYPTION_KEY = SHA256(SHA256(TOKEN))  &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; This scheme might be vulnerable to rainbow table attack.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;  &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Thank you for pointing this out! Incidentally, Dmitry Petukhov&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; also told me the same privately.  &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; My thought was that if TOKEN has the characteristics of a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; password (short ASCII string), then it would be better to use&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; key derivation function designed for passwords, like PBKDF2.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; The counter-argument to this is that this adds another code&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; dependency for vendors, if the device firmware does not already&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; have the required key derivation function.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Maybe this could be solved by going into opposite direction -&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; make the &amp;#34;token&amp;#34; even longer, use the mnemoic.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; The issue is that entering long data of the shared key into the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; device manually is difficult UX-wise.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Hww vendors that allow to enter custom keys into their device&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; already have to face this issue, and those who allow to enter&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; custom keys via mnemonic probably tackled this somehow.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Maybe the shared key for multisig setup can be entered in the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; same way ? (with maybe additional visual check via some&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; fingerprint).&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Although we would then have another issue of potential confusion&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; between two procedures (entering the main key and entering the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; shared key for multisig setup), and the measures has to be&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; taken to prevent such confusion.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; The approaches can be combined - specify a key derivation&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; function suitable for passwords; via secure channel, share a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; password and/or the derived key. If hww supports derivation&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; function, it can derive the key from password. If hww supports&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; only keys, the key can be entered raw or via mnemonic.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;  &lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;
    </content>
    <updated>2023-06-07T20:28:37&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdv0wmxamqpny3xq4u9r4faafcwngytry4grhu4hdzu38ydxrgpwqzypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2gms9x0</id>
    
      <title type="html">📅 Original date posted:2021-02-12 📝 Original message:If ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdv0wmxamqpny3xq4u9r4faafcwngytry4grhu4hdzu38ydxrgpwqzypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2gms9x0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfd0l2r3zral0nj3kj0m7lgjsxfhta3hd00xlx9q8mhvc7lglmp6cs56v05&#39;&gt;nevent1q…6v05&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-12&lt;br/&gt;📝 Original message:If HUMAN_READABLE_TITLE is the additional secret, the user would need&lt;br/&gt;to enter it on the device in addition to the nonce, wouldn&amp;#39;t it defeat&lt;br/&gt;the advantage in UX that was gained by using (relatively) short nonce ?&lt;br/&gt;&lt;br/&gt;Is 64 bit nonce not enough ?&lt;br/&gt;&lt;br/&gt;It seems that to crack this with fixed Pwd and 64 bit nonce, the&lt;br/&gt;attacker will need to be about 10^15 more powerful than 80Mhz MCU:&lt;br/&gt;(2^64)/(0.3*10^15)/3600 = 17 hours. I don&amp;#39;t know if 10^15 is realistic&lt;br/&gt;scale. Average desktop cpu seems to be about 10^3 more powerful than&lt;br/&gt;the mentioned MCU for this task.&lt;br/&gt;&lt;br/&gt;Maybe for the UX it would be better to choose the number of rounds to&lt;br/&gt;use in PBKDF2, instead of using variable Pwd. Number of rounds will be&lt;br/&gt;easier to enter on the device (or just choose it from a set of&lt;br/&gt;pre-defined values). The more money is at stake, the higher number of&lt;br/&gt;rounds could the coordinator choose (taking into account the&lt;br/&gt;characteristics of the participant devices)&lt;br/&gt;&lt;br/&gt;В Fri, 12 Feb 2021 08:55:55 -0800&lt;br/&gt;Hugo Nguyen &amp;lt;hugo at nunchuk.io&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Thanks everyone who has provided inputs so far!&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This is the new proposal for the encryption aspect of the scheme,&lt;br/&gt;&amp;gt; based on all the feedback.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The key derivation function would be PBKDF2, with PRF = SHA512. This&lt;br/&gt;&amp;gt; should be readily available on today&amp;#39;s hardware already, as they are&lt;br/&gt;&amp;gt; used for BIP39.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; DK = PBKDF2(PRF, Password, Salt, c, dkLen)&lt;br/&gt;&amp;gt; PRF = SHA512&lt;br/&gt;&amp;gt; Pwd = HUMAN_READABLE_TITLE&lt;br/&gt;&amp;gt; Salt = NONCE&lt;br/&gt;&amp;gt; c = 2048&lt;br/&gt;&amp;gt; dkLen = 256&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; HUMAN_READABLE_TITLE is in ASCII format, minimum length = 8, maximum&lt;br/&gt;&amp;gt; length = 20.&lt;br/&gt;&amp;gt; NONCE is a 64-bit number.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Reason for going with SHA512 is due to legacy support on some&lt;br/&gt;&amp;gt; hardware. c=2048 also mimics BIP39. It takes about ~3 seconds to&lt;br/&gt;&amp;gt; derive the encryption key on a 80Mhz MCU. We feel like this is a good&lt;br/&gt;&amp;gt; enough tradeoff for this use case. The assumption here is that the&lt;br/&gt;&amp;gt; secure session is only needed temporarily for a few hours, maybe up&lt;br/&gt;&amp;gt; to one day.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The Coordinator and Signers agree and exchange these 2 secrets prior&lt;br/&gt;&amp;gt; to the setup. The NONCE can be converted to either:&lt;br/&gt;&amp;gt; (a) a 6-word phrase using BIP39 wordlist&lt;br/&gt;&amp;gt; (b) a 20-digit decimal number&lt;br/&gt;&amp;gt; (c) a QR code&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Depending on the vendor. This flexibility in the data format allows&lt;br/&gt;&amp;gt; each vendor to customize the UX based on their respective device&lt;br/&gt;&amp;gt; capabilities.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Hugo&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Thu, Feb 11, 2021 at 8:25 AM Dmitry Petukhov via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; В Thu, 11 Feb 2021 05:45:33 -0800&lt;br/&gt;&amp;gt; &amp;gt; Hugo Nguyen via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;  &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; ENCRYPTION_KEY = SHA256(SHA256(TOKEN))  &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; This scheme might be vulnerable to rainbow table attack.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;  &lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Thank you for pointing this out! Incidentally, Dmitry Petukhov&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; also told me the same privately.  &lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; My thought was that if TOKEN has the characteristics of a password&lt;br/&gt;&amp;gt; &amp;gt; (short ASCII string), then it would be better to use key derivation&lt;br/&gt;&amp;gt; &amp;gt; function designed for passwords, like PBKDF2.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The counter-argument to this is that this adds another code&lt;br/&gt;&amp;gt; &amp;gt; dependency for vendors, if the device firmware does not already&lt;br/&gt;&amp;gt; &amp;gt; have the required key derivation function.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Maybe this could be solved by going into opposite direction - make&lt;br/&gt;&amp;gt; &amp;gt; the &amp;#34;token&amp;#34; even longer, use the mnemoic.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The issue is that entering long data of the shared key into the&lt;br/&gt;&amp;gt; &amp;gt; device manually is difficult UX-wise.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Hww vendors that allow to enter custom keys into their device&lt;br/&gt;&amp;gt; &amp;gt; already have to face this issue, and those who allow to enter&lt;br/&gt;&amp;gt; &amp;gt; custom keys via mnemonic probably tackled this somehow.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Maybe the shared key for multisig setup can be entered in the same&lt;br/&gt;&amp;gt; &amp;gt; way ? (with maybe additional visual check via some fingerprint).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Although we would then have another issue of potential confusion&lt;br/&gt;&amp;gt; &amp;gt; between two procedures (entering the main key and entering the&lt;br/&gt;&amp;gt; &amp;gt; shared key for multisig setup), and the measures has to be taken to&lt;br/&gt;&amp;gt; &amp;gt; prevent such confusion.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The approaches can be combined - specify a key derivation function&lt;br/&gt;&amp;gt; &amp;gt; suitable for passwords; via secure channel, share a password and/or&lt;br/&gt;&amp;gt; &amp;gt; the derived key. If hww supports derivation function, it can derive&lt;br/&gt;&amp;gt; &amp;gt; the key from password. If hww supports only keys, the key can be&lt;br/&gt;&amp;gt; &amp;gt; entered raw or via mnemonic.&lt;br/&gt;&amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;
    </content>
    <updated>2023-06-07T20:28:36&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsp0arnkle32tdh3u5xqy8r88wtsfnnptvq6dsfjk0wwagnz3w6xzszypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2khj0cr</id>
    
      <title type="html">📅 Original date posted:2021-02-11 📝 Original message:В ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsp0arnkle32tdh3u5xqy8r88wtsfnnptvq6dsfjk0wwagnz3w6xzszypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2khj0cr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsggrpcg78pghe7mnv3u9h4a6w84ummzplxwgt2gcn4g2n8qqr293qy3ntfr&#39;&gt;nevent1q…ntfr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-11&lt;br/&gt;📝 Original message:В Thu, 11 Feb 2021 05:45:33 -0800&lt;br/&gt;Hugo Nguyen via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; ENCRYPTION_KEY = SHA256(SHA256(TOKEN))  &lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; This scheme might be vulnerable to rainbow table attack.&lt;br/&gt;&amp;gt; &amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thank you for pointing this out! Incidentally, Dmitry Petukhov also&lt;br/&gt;&amp;gt; told me the same privately.&lt;br/&gt;&lt;br/&gt;My thought was that if TOKEN has the characteristics of a password&lt;br/&gt;(short ASCII string), then it would be better to use key derivation&lt;br/&gt;function designed for passwords, like PBKDF2.&lt;br/&gt;&lt;br/&gt;The counter-argument to this is that this adds another code dependency&lt;br/&gt;for vendors, if the device firmware does not already have the required&lt;br/&gt;key derivation function.&lt;br/&gt;&lt;br/&gt;Maybe this could be solved by going into opposite direction - make the&lt;br/&gt;&amp;#34;token&amp;#34; even longer, use the mnemoic.&lt;br/&gt;&lt;br/&gt;The issue is that entering long data of the shared key into the device&lt;br/&gt;manually is difficult UX-wise.&lt;br/&gt;&lt;br/&gt;Hww vendors that allow to enter custom keys into their device already&lt;br/&gt;have to face this issue, and those who allow to enter custom keys via&lt;br/&gt;mnemonic probably tackled this somehow.&lt;br/&gt;&lt;br/&gt;Maybe the shared key for multisig setup can be entered in the same way&lt;br/&gt;? (with maybe additional visual check via some fingerprint).&lt;br/&gt;&lt;br/&gt;Although we would then have another issue of potential confusion&lt;br/&gt;between two procedures (entering the main key and entering the shared&lt;br/&gt;key for multisig setup), and the measures has to be taken to prevent&lt;br/&gt;such confusion.&lt;br/&gt;&lt;br/&gt;The approaches can be combined - specify a key derivation function&lt;br/&gt;suitable for passwords; via secure channel, share a password and/or the&lt;br/&gt;derived key. If hww supports derivation function, it can derive the key&lt;br/&gt;from password. If hww supports only keys, the key can be entered raw or&lt;br/&gt;via mnemonic.
    </content>
    <updated>2023-06-07T20:28:34&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstymk973fhsydts3z70g8p3v0ez5f7da7tfa5x7pj3ledcd83aywgzypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2n5xhmu</id>
    
      <title type="html">📅 Original date posted:2021-02-05 📝 Original message:В ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstymk973fhsydts3z70g8p3v0ez5f7da7tfa5x7pj3ledcd83aywgzypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2n5xhmu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxlw7trn2ejwcgvpxrw5xr4p0k8r008l59gdg5xh0etpaqemwktsq3fmmkc&#39;&gt;nevent1q…mmkc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-05&lt;br/&gt;📝 Original message:В Fri, 05 Feb 2021 17:51:27 &#43;0000&lt;br/&gt;Dr Maxim Orlovsky via bitcoin-dev&lt;br/&gt;&amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Testnet path is unhardened from this point &amp;amp; till the end of the&lt;br/&gt;&amp;gt; derivation path: no need to prevent private key leak there,&lt;br/&gt;&amp;gt; simplifies test software (hardened paths require private key access&lt;br/&gt;&amp;gt; for derivation).&lt;br/&gt;&lt;br/&gt;I believe this will reduce robustness and will add complexity to the&lt;br/&gt;test software instead. If the derivation path is hardened in &amp;#39;production&lt;br/&gt;code&amp;#39; and is unhardened in &amp;#39;test code&amp;#39;, then: code paths that depend on&lt;br/&gt;hardened derivation may not be tested; there will be unnecessary&lt;br/&gt;code that will need to deal with &amp;#39;un-hardening&amp;#39; the paths for test code.&lt;br/&gt;&lt;br/&gt;It is much more robust to just change the &amp;#39;purpose&amp;#39; part of the path,&lt;br/&gt;and leave the rest unchanged.&lt;br/&gt;&lt;br/&gt;It is OK to require privkey access to hardened paths in test&lt;br/&gt;software, because the same behaviour is expected in &amp;#39;production&amp;#39;.
    </content>
    <updated>2023-06-07T20:28:27&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs93n6hvp4vggps5fngsa3q4vep0ha5vt07v9lhwwprlawnqfa8eaczypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2uln6sj</id>
    
      <title type="html">📅 Original date posted:2020-06-01 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs93n6hvp4vggps5fngsa3q4vep0ha5vt07v9lhwwprlawnqfa8eaczypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2uln6sj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdug5u9d9wp6cgkka6s8x4enfms46wmlhd7yq0rdxjqgjelzj3wygvmtrly&#39;&gt;nevent1q…trly&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-06-01&lt;br/&gt;📝 Original message:I&amp;#39;ve finished specifying the full Succint Atomic Swap contract in TLA&#43;.&lt;br/&gt;&lt;br/&gt;I believe the specification [1] now covers all relevant behaviors of&lt;br/&gt;the participants. It even has an option to enable &amp;#39;non-rational&amp;#39;&lt;br/&gt;behavior, so that it can be shown that the transactions that are there&lt;br/&gt;to punish bad behavior can actually be used. If you examine the spec&lt;br/&gt;and find that I failed to specify some relevant behavior, please tell.&lt;br/&gt;&lt;br/&gt;The specification can be used to exhaustively check safety properties&lt;br/&gt;of the model (such as no participant can take both coins, unless in&lt;br/&gt;explicitly specified circumstances), and temporal properties (such as&lt;br/&gt;contract always end up in an explicitly specified &amp;#39;finished&amp;#39; state).&lt;br/&gt;&lt;br/&gt;The specification can also be used to *show* (but not automatically&lt;br/&gt;check at the moment) the hyperproperties of the model, such as what&lt;br/&gt;transactions can ever be confirmed in at least one the execution path,&lt;br/&gt;max/min/avg values for various stats, etc. The information on these&lt;br/&gt;hyperproperties can be printed out during model checking, and can be&lt;br/&gt;examined manually or with help of additional scripts (if one willing to&lt;br/&gt;write some).&lt;br/&gt;&lt;br/&gt;The model has some limitations, like only having one miner, and not&lt;br/&gt;modelling fees and mempool priorities. More than one miner needed to&lt;br/&gt;introduce reorgs in the model, but I believe that reorgs are relevant&lt;br/&gt;only if we cannot say that &amp;#34;one block in the model means 6 bitcoin&lt;br/&gt;blocks&amp;#34; (or whatever reorg safety limit is acceptable). I also believe&lt;br/&gt;that the fees and mempool priorities are a lower-level concern, because&lt;br/&gt;the task to confirm the transaction in time is the same for different&lt;br/&gt;stages of the contract and for different transactions, and therefore&lt;br/&gt;this can be modelled separately.&lt;br/&gt;&lt;br/&gt;The goal of creating this specification was to evaluate the suitability&lt;br/&gt;of TLA&#43; for modelling of the smart contracts in UTXO-based&lt;br/&gt;blockchain systems. I believe that the presented spec shows that it is&lt;br/&gt;indeed feasible to do such modelling and TLA&#43; is a suitable tool for&lt;br/&gt;specifying and for checking such specifications (Although having ability&lt;br/&gt;to automatically check hyperproperties using TLA&#43; expressions would be&lt;br/&gt;nice).&lt;br/&gt;&lt;br/&gt;I hope that this spec can be used as a basis for specs for other&lt;br/&gt;contracts, and that using TLA&#43; can make designing safe contracts for&lt;br/&gt;UTXO-based systems easier. I also hope that this will help to increase&lt;br/&gt;interest in using formal methods in this area.&lt;br/&gt;&lt;br/&gt;I tried to make the parts of the spec that deal with things like mining&lt;br/&gt;and mempool to not depend on the concrete contract logic, in&lt;br/&gt;expectation that this logic can be reused afterwards for the specs of&lt;br/&gt;other contracts. I did not make specific effort to factor out this&lt;br/&gt;generic logic into separate module though, because I think that more&lt;br/&gt;various contract specifications need to be designed and analyzed to&lt;br/&gt;understand what is really generic and what should lay with concrete&lt;br/&gt;contract logic. When more knowledge is created regarding this, there&lt;br/&gt;could be a module that contract specifications can use to avoid&lt;br/&gt;explicitly specifying the generic blockchain-related logic.&lt;br/&gt;&lt;br/&gt;Thanks to Ruben Somsen for designing this contract and&lt;br/&gt;providing helpful description and diagram that made it possible to&lt;br/&gt;create this formal specification.&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://github.com/dgpv/SASwap_TLAplus_spec&#34;&gt;https://github.com/dgpv/SASwap_TLAplus_spec&lt;/a&gt;
    </content>
    <updated>2023-06-07T20:25:08&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxtj4gzd2scvgp2vndvn0370xpkuml4nez5vnqx55j5reu2y6vy4qzypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq244e7yx</id>
    
      <title type="html">📅 Original date posted:2020-05-13 📝 Original message:The ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxtj4gzd2scvgp2vndvn0370xpkuml4nez5vnqx55j5reu2y6vy4qzypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq244e7yx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp98snzxt6wz4zv8x8fjpp87vpc8wxfml505v27a2fhfkny0482eghqales&#39;&gt;nevent1q…ales&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-05-13&lt;br/&gt;📝 Original message:The Succint Atomic Swap contract presented by Ruben Somsen recently has&lt;br/&gt;drawn much interest.&lt;br/&gt;&lt;br/&gt;I personally am interested in the smart contracts realizeable in the&lt;br/&gt;UTXO model, and also interested in applying formal methods to the&lt;br/&gt;design and implementation of such contracts.&lt;br/&gt;&lt;br/&gt;I think that having formal specifications for the contracts and to be&lt;br/&gt;able to machine-check the properties of these specifications is very&lt;br/&gt;valuable, as it can uncover the corner cases that might be difficult to&lt;br/&gt;uncover otherwise.&lt;br/&gt;&lt;br/&gt;The SAS contract is complex enough that it may benefit from formal&lt;br/&gt;specification and machine checking.&lt;br/&gt;&lt;br/&gt;I created a specification in TLA&#43; [1] specification language based on&lt;br/&gt;the explanation and the diagram given by Ruben.&lt;br/&gt;&lt;br/&gt;The checking of the model encoded in the specification can successfully&lt;br/&gt;detect the violation of &amp;#39;no mutual secret knowledge&amp;#39; invariant when one&lt;br/&gt;of the participant can bypass mempool and give the transaction directly&lt;br/&gt;to the miner (this problem was pointed out by ZmnSCPxj in the original&lt;br/&gt;SAS thread [2])&lt;br/&gt;&lt;br/&gt;There&amp;#39;s one transition that was unclear how to model, though: I did not&lt;br/&gt;understand what the destination of Alice&amp;amp;Bob cooperative spend of&lt;br/&gt;refund_tx#1 will be, so this transition is not modelled.&lt;br/&gt;&lt;br/&gt;I believe there can be more invariants and temporal properties of the&lt;br/&gt;model that can be checked. At the moment the temporal properties&lt;br/&gt;checking does not work, as I didn&amp;#39;t master TLA&#43; enough yet. The safety&lt;br/&gt;invariants checking should work fine, though, but more work needed to&lt;br/&gt;devise and add the invariants.&lt;br/&gt;&lt;br/&gt;In the future, it would be great to have an established framework for&lt;br/&gt;modelling of the behavior in Bitcoin-like blockchain networks.&lt;br/&gt;In particular, having a model of mempool-related behavior would help to&lt;br/&gt;reason about difficult RBF/CPFP issues. The specification I present&lt;br/&gt;models the mempool, but in a simple way, without regards to the fees.&lt;br/&gt;&lt;br/&gt;The specification can be found in this github repository:&lt;br/&gt;&lt;a href=&#34;https://github.com/dgpv/SASwap_TLAplus_spec&#34;&gt;https://github.com/dgpv/SASwap_TLAplus_spec&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;There could be mistakes or omissions in the specified model, I hope&lt;br/&gt;that public review can help find these.&lt;br/&gt;&lt;br/&gt;It would be great to receive comments, suggestions and corrections,&lt;br/&gt;especially from people experienced in formal methods and TLA&#43;, as this&lt;br/&gt;is only my second finished TLA&#43; spec and only my third project using&lt;br/&gt;formal methods (I created bitcoin transaction deserialization code in&lt;br/&gt;Ada/SPARK before that [3]). Please use the github issues or off-list&lt;br/&gt;mail to discuss if the matter is not interesting to the general&lt;br/&gt;bitcoin-dev list audience.&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://lamport.azurewebsites.net/tla/tla.html&#34;&gt;https://lamport.azurewebsites.net/tla/tla.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[2]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-May/017846.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-May/017846.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[3] &lt;a href=&#34;https://github.com/dgpv/spark-bitcoin-transaction-example&#34;&gt;https://github.com/dgpv/spark-bitcoin-transaction-example&lt;/a&gt;
    </content>
    <updated>2023-06-07T20:24:44&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqst8drsal3x00lxrz7tf3hpg0vq7snq6ye09hw88aht2p4xlnyhm0qzypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2x6dqm6</id>
    
      <title type="html">📅 Original date posted:2020-01-11 📝 Original message:I am ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqst8drsal3x00lxrz7tf3hpg0vq7snq6ye09hw88aht2p4xlnyhm0qzypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq2x6dqm6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs06wch0yeq8cksx0vtgvs7hs82xc3v2vu9f7znsh3uvv2qdxyz7dg2epyrx&#39;&gt;nevent1q…pyrx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-01-11&lt;br/&gt;📝 Original message:I am not sure that this particular task should be done with data&lt;br/&gt;embedded in PSBT itself, and not with some sort of container that&lt;br/&gt;includes PSBT and the authentication information.&lt;br/&gt;&lt;br/&gt;The benefit seems to be in reusing PSBT structure for compatibilty, and&lt;br/&gt;this might be a valid way, although I do not agree with some of your&lt;br/&gt;points. I elaborate below:&lt;br/&gt;&lt;br/&gt;&amp;gt; 1) In the PSBT globals section, a signature over the &amp;#34;source&amp;#34; PSBT&lt;br/&gt;&amp;gt; file. It would cover all the bytes of the original PSBT file, as&lt;br/&gt;&amp;gt; it was received by the Signer.&lt;br/&gt;&lt;br/&gt;The problem of authenticating the contents of PSBT is independent of&lt;br/&gt;the signing action. PSBT might be altered on the path from Creator to&lt;br/&gt;Signer. Therefore you cannot always say that Signer will be an&lt;br/&gt;authority over &amp;#39;correctness&amp;#39; of PSBT.&lt;br/&gt;&lt;br/&gt;&amp;gt; - At the end of the signing process, the Finalizer should check all&lt;br/&gt;&amp;gt; the Signers have worked from the same PSBT file (assuming that&amp;#39;s&lt;br/&gt;&amp;gt; the flow expected)&lt;br/&gt;&lt;br/&gt;If there is MitM, checking something at Finalizer is likely too&lt;br/&gt;late - the party that can intercept PSBTs can finalize before the&lt;br/&gt;legitimate Finalizer and broadcast the transaction.&lt;br/&gt;&lt;br/&gt;Participants can work from the same PSBT file if they all receive the&lt;br/&gt;same PSBT, and not working in chain where next particpant receives&lt;br/&gt;updated PSBT from the previous participant. Otherwise they will need to&lt;br/&gt;either pass two files (original and updated), or work out which fields&lt;br/&gt;(key-value blobs) to remove to get the &amp;#39;source&amp;#39; PSBT (which might not be&lt;br/&gt;trivial with presense of proprietary and unknown fields). Even if you&lt;br/&gt;know which key-value pairs to remove, there is no requirement for&lt;br/&gt;ordering of the fields, and some signer can serialize them in different&lt;br/&gt;order after dserialize/sign/add-signatures/re-serialize operation.&lt;br/&gt;&lt;br/&gt;Introducing additional ordering or other structure requirements over&lt;br/&gt;simple key-value structure will add complexity to PSBT processing, and&lt;br/&gt;adding complexity on such a basic level should have really serious&lt;br/&gt;reasons, because that increases effort required for even basic&lt;br/&gt;implementations and increases chance of bugs.&lt;br/&gt;&lt;br/&gt;If there is some authority on the &amp;#39;correctness&amp;#39; of &amp;#39;original&amp;#39; PSBT&lt;br/&gt;(all particpants receive same PSBT at the start), particpants should&lt;br/&gt;check the signature by that authority. That authority might use&lt;br/&gt;the key used only for authentication, and not in the tx signing.&lt;br/&gt;&lt;br/&gt;If particpants send PSBT in chain after adding their signatures, then&lt;br/&gt;each participant can add their signature to say &amp;#39;the contents&lt;br/&gt;of PSBT after my updates should match this hash&amp;#39;.&lt;br/&gt;&lt;br/&gt;The signatures of previous participants in the chain most likely do not&lt;br/&gt;matter because of difficulty of restoring the contents of PSBT as it&lt;br/&gt;was before the previous particpant, if you do not pass _all_ the PSBTs&lt;br/&gt;(which is excessive). &lt;br/&gt; &lt;br/&gt;&amp;gt; 2) In the output section, specifically, the last key/value pair of&lt;br/&gt;&amp;gt; the last output of the transaction, I want to add a similar signature,&lt;br/&gt;&amp;gt; again signed by one of the keys used in the signing process. This&lt;br/&gt;&amp;gt; signature will cover all the bytes of the resulting (signed) PSBT&lt;br/&gt;&amp;gt; up to that point. Because it is the last output of the output&lt;br/&gt;&amp;gt; section, that signature will be the last few bytes of the PSBT file.&lt;br/&gt;&amp;gt; By &amp;#34;appending&amp;#34; the signature in this way, it&amp;#39;s easier to validate&lt;br/&gt;&amp;gt; and create the signature, without blanking the signature area during&lt;br/&gt;&amp;gt; digest step.&lt;br/&gt;&lt;br/&gt;This will introduce unnecessary higher-level structure to PSBT for the&lt;br/&gt;reasons that I do not find strong enough for the amount of complexity&lt;br/&gt;added.&lt;br/&gt;&lt;br/&gt;Also, as I said above, you likely do not need more than one&lt;br/&gt;signature - if this is &amp;#39;fan-out&amp;#39; scheme, then participants need do&lt;br/&gt;check the sig of authority that created PSBT; if this is piggy-back&lt;br/&gt;chain, then only previous particpant&amp;#39;s signature is easily verifiable.&lt;br/&gt;&lt;br/&gt;&amp;gt; ## Next Steps&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I&amp;#39;d like to get two officially-assigned BIP-174 key numbers assigned&lt;br/&gt;&amp;gt; for these two signatures, and then I will see that it gets added&lt;br/&gt;&amp;gt; into Coldcard&amp;#39;s firmware immediately. In time, other tools are&lt;br/&gt;&amp;gt; welcome to take advantage of these checks. I will also write a BIP&lt;br/&gt;&amp;gt; for this, and/or make an addition to BIP-174.&lt;br/&gt;&lt;br/&gt;I think you do not need to wait for officially-assigned key numbers,&lt;br/&gt;and can just implement the scheme you envision with proprietary keys,&lt;br/&gt;document and promote it. Then if it shows its usefulness, it will&lt;br/&gt;either become de-facto standard with your proprietary keys (and&lt;br/&gt;everyone will want to support &amp;#39;Coldard PSBT auth&amp;#39; or whatever the name),&lt;br/&gt;or the scheme will have serious grounds to be converted to standard and&lt;br/&gt;have non-proprietary keys assigned.&lt;br/&gt;&lt;br/&gt;// Dmitry.&lt;br/&gt;-------------- next part --------------&lt;br/&gt;A non-text attachment was scrubbed...&lt;br/&gt;Name: not available&lt;br/&gt;Type: application/pgp-signature&lt;br/&gt;Size: 833 bytes&lt;br/&gt;Desc: Ð¦Ð¸Ñ„Ñ€Ð¾Ð²Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑŒ OpenPGP&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200112/1e8c2cc8/attachment-0001.sig&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200112/1e8c2cc8/attachment-0001.sig&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:22:21&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszdg3dpgk94s9vnezde4rxqzkzrqdru9v0lcaxhpdlyvkqw64nu4czypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq25c7nnk</id>
    
      <title type="html">📅 Original date posted:2019-08-06 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszdg3dpgk94s9vnezde4rxqzkzrqdru9v0lcaxhpdlyvkqw64nu4czypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq25c7nnk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyc4p2lllzsvpr6lgv5tauvm5e4dc2pqzw507g5rxr3qraljhd82cw5s7mk&#39;&gt;nevent1q…s7mk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-08-06&lt;br/&gt;📝 Original message:Unfortunately, both described schemes fail the same way as&lt;br/&gt;&amp;#39;require TXOs to be consolidated by the owner&amp;#39;, by the fact that with&lt;br/&gt;muSig, shared ownership of TXO is possible, as explained by ZmnSCPxj in&lt;br/&gt;[1]. 2P-ECDSA is also possible, just more complex, so just saying &amp;#39;ban&lt;br/&gt;musig for the bonds&amp;#39; is not the answer, I believe.&lt;br/&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-August/017217.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-August/017217.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;В Wed, 7 Aug 2019 01:55:41 &#43;0500&lt;br/&gt;Dmitry Petukhov &amp;lt;dp at simplexum.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; В Mon, 5 Aug 2019 20:04:26 &#43;0100&lt;br/&gt;&amp;gt; Chris Belcher &amp;lt;belcher at riseup.net&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; So what&amp;#39;s needed is a way to make renting out TXOs impossible or&lt;br/&gt;&amp;gt; &amp;gt; very difficult.  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; You can make renting the TXOs risky for the attacker. Make it so that&lt;br/&gt;&amp;gt; the entity that rented out the TXO can revoke the participation of&lt;br/&gt;&amp;gt; said TXO in the market, by publishing some special signature. That&lt;br/&gt;&amp;gt; act of revocation can also mean revocation of all other TXOs that&lt;br/&gt;&amp;gt; were used in a bond alongside it. This way, any entity that wants to&lt;br/&gt;&amp;gt; spoil an attacker&amp;#39;s consolidation via rent, can rent out its TXO to&lt;br/&gt;&amp;gt; the attacker, and then revoke it, spoiling the whole package the&lt;br/&gt;&amp;gt; attacker have consolidated.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; There may be other way to impose penalties.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; For example, all locked TXO may be required to be spendable by *any*&lt;br/&gt;&amp;gt; key that controls any TXO in the &amp;#39;bond TXO package&amp;#39;. I think this&lt;br/&gt;&amp;gt; should be possible with taproot - you will have to publish a taproot&lt;br/&gt;&amp;gt; trees for your locked TXOs (say, N of them), and the tree for each TXO&lt;br/&gt;&amp;gt; will have N leaves, each leaf will specify a condition &amp;#34;spendable by&lt;br/&gt;&amp;gt; the key N&amp;#34;. This way, if I give you my TXO to include it in a bond by&lt;br/&gt;&amp;gt; locking it, you also need to make your other TXOs in a bond spendable&lt;br/&gt;&amp;gt; by me.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; For both scenarios to work for the attacker, there&amp;#39;s need to be an&lt;br/&gt;&amp;gt; off-chain contractual relationship between the parties. Otherwise the&lt;br/&gt;&amp;gt; entity that rents out the TXOs can spoil or just confiscate the bond&lt;br/&gt;&amp;gt; of the entity that rented them, without reprecussions.
    </content>
    <updated>2023-06-07T20:19:57&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyc4p2lllzsvpr6lgv5tauvm5e4dc2pqzw507g5rxr3qraljhd82czypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq28lrrsd</id>
    
      <title type="html">📅 Original date posted:2019-08-06 📝 Original message:В ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyc4p2lllzsvpr6lgv5tauvm5e4dc2pqzw507g5rxr3qraljhd82czypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq28lrrsd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs93p247mf9qk4zma3e55vwhnwwp627sd5ztstm9enkzh70e7tc0lc0kxp9x&#39;&gt;nevent1q…xp9x&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-08-06&lt;br/&gt;📝 Original message:В Mon, 5 Aug 2019 20:04:26 &#43;0100&lt;br/&gt;Chris Belcher &amp;lt;belcher at riseup.net&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; So what&amp;#39;s needed is a way to make renting out TXOs impossible or very&lt;br/&gt;&amp;gt; difficult.&lt;br/&gt;&lt;br/&gt;You can make renting the TXOs risky for the attacker. Make it so that&lt;br/&gt;the entity that rented out the TXO can revoke the participation of said&lt;br/&gt;TXO in the market, by publishing some special signature. That act of&lt;br/&gt;revocation can also mean revocation of all other TXOs that were used in&lt;br/&gt;a bond alongside it. This way, any entity that wants to spoil an&lt;br/&gt;attacker&amp;#39;s consolidation via rent, can rent out its TXO to the&lt;br/&gt;attacker, and then revoke it, spoiling the whole package the attacker&lt;br/&gt;have consolidated.&lt;br/&gt;&lt;br/&gt;There may be other way to impose penalties.&lt;br/&gt;&lt;br/&gt;For example, all locked TXO may be required to be spendable by *any*&lt;br/&gt;key that controls any TXO in the &amp;#39;bond TXO package&amp;#39;. I think this&lt;br/&gt;should be possible with taproot - you will have to publish a taproot&lt;br/&gt;trees for your locked TXOs (say, N of them), and the tree for each TXO&lt;br/&gt;will have N leaves, each leaf will specify a condition &amp;#34;spendable by&lt;br/&gt;the key N&amp;#34;. This way, if I give you my TXO to include it in a bond by&lt;br/&gt;locking it, you also need to make your other TXOs in a bond spendable&lt;br/&gt;by me.&lt;br/&gt;&lt;br/&gt;For both scenarios to work for the attacker, there&amp;#39;s need to be an&lt;br/&gt;off-chain contractual relationship between the parties. Otherwise the&lt;br/&gt;entity that rents out the TXOs can spoil or just confiscate the bond of&lt;br/&gt;the entity that rented them, without reprecussions.
    </content>
    <updated>2023-06-07T20:19:56&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsw0n097alge9mjhkh7m56rxzv28nqaftt00gvtltnw97emz2y9ddgzypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq20m4vh7</id>
    
      <title type="html">📅 Original date posted:2018-11-08 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsw0n097alge9mjhkh7m56rxzv28nqaftt00gvtltnw97emz2y9ddgzypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq20m4vh7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsds2a4uu0epwpxxx9twggw0738pwk58hls2q2plqfsy6r5a0yk28cx9mutd&#39;&gt;nevent1q…mutd&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-11-08&lt;br/&gt;📝 Original message:&amp;gt; Copying addresses to the clipboard should be discouraged, rather than&lt;br/&gt;&amp;gt; supported.&lt;br/&gt;&lt;br/&gt;Do you know any reasonably convenient mechanism for end user to&lt;br/&gt;transfer an address from, say, a web page to the wallet address&lt;br/&gt;input field ?&lt;br/&gt;&lt;br/&gt;The clipboard is just a low-hanging fruit for malware, anyway. It just&lt;br/&gt;the most easy point to replace an address. If the computer is&lt;br/&gt;compromized, malware can edit the web page in the memory of the browser&lt;br/&gt;process, for example. If it shown as QR code, malware can decode,&lt;br/&gt;detect that it is an address, and replace the image of QR code.&lt;br/&gt;&lt;br/&gt;I think that the only way to protect from this is to add some form of&lt;br/&gt;authentication for an address - 2fa (transfer checksum via second&lt;br/&gt;channel), visual fingerprints for addresses, that will are hard to&lt;br/&gt;detect (and hence, replace) for malware, signing the destination address&lt;br/&gt;with the key of an address that is already known and checking the&lt;br/&gt;signature, etc.&lt;br/&gt;&lt;br/&gt;The problem will be to come up with an address authentication procedure&lt;br/&gt;that will be convenient for users and widely supported, as a result.
    </content>
    <updated>2023-06-07T20:15:10&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz2ct0e7ual2h6lqqr2np55gg2f54wualscnu2pf2k4r4mm8na9fszypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq20tkgyr</id>
    
      <title type="html">📅 Original date posted:2018-11-08 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz2ct0e7ual2h6lqqr2np55gg2f54wualscnu2pf2k4r4mm8na9fszypu0t2p2pdj0k0qch5e6d8znkxhkz2e6erwcrcf0wjax9ume8kkq20tkgyr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqc0gnrw6k9lvlu8unvl9xw4f56rr4xt7vgz87tmz5shms4vyxzpcky7taq&#39;&gt;nevent1q…7taq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-11-08&lt;br/&gt;📝 Original message:&amp;gt; &amp;gt; Do you know any reasonably convenient mechanism for end user to&lt;br/&gt;&amp;gt; &amp;gt; transfer an address from, say, a web page to the wallet address&lt;br/&gt;&amp;gt; &amp;gt; input field ?  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; - QR code scanning of a Bitcoin URI&lt;br/&gt;&amp;gt; - On Android: A &amp;#34;bitcoin:&amp;#34; URI intent or a BIP70 payment message&lt;br/&gt;&amp;gt; intent&lt;br/&gt;&amp;gt; - On desktop OSes there are similar mechanisms to launch Apps from the&lt;br/&gt;&amp;gt; browser (e.g. for mailto: links)&lt;br/&gt;&lt;br/&gt;This works if the author of the web page thought about this, and&lt;br/&gt;created appropriate liks/qr codes. In many cases, addresses are&lt;br/&gt;just presented for users as text, to copy.&lt;br/&gt;&lt;br/&gt;People also send addresses in message apps and emails. Maybe if&lt;br/&gt;applications start to autodetect bitcoin addresses and convert them to&lt;br/&gt;bitcoin: links, there will be less need to copy-paste. But I suspect&lt;br/&gt;that this feature will not be quickly adopted by applications.&lt;br/&gt;&lt;br/&gt;&amp;gt; For cases where the payee is a well-known entity the BIP70 payment&lt;br/&gt;&amp;gt; protocol has authentication via certificates. That doesn&amp;#39;t work for&lt;br/&gt;&amp;gt; the &amp;#34;the person in front of you is the only trust anchor you have&amp;#34;&lt;br/&gt;&amp;gt; usecase though.&lt;br/&gt;&lt;br/&gt;There are also BIP75 and BIP47 that may help, but the number of wallets&lt;br/&gt;that support these protocols is small (I think in part because of&lt;br/&gt;relative complexity of these protocols).
    </content>
    <updated>2023-06-07T20:15:10&#43;02:00</updated>
  </entry>

</feed>