<oembed><type>rich</type><version>1.0</version><author_name>npub1jqxs4ftunmm8qjyw9s80hpcayewkjfhpxund29l9qvzy7xqx4duq85jqeg</author_name><author_url>https://nostr.ae/npub1jqxs4ftunmm8qjyw9s80hpcayewkjfhpxund29l9qvzy7xqx4duq85jqeg</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2021-04-09&#xA;📝 Original message:Hi Sjors&#xA;Thanks for the feedback!&#xA;&#xA;The first step is for the Coordinator to generate a TOKEN, presumably using&#xA;&gt; its own entropy. But IIUC anyone who intercepts that token can decrypt any&#xA;&gt; future step in the setup process. This suggests a chicken-egg problem where&#xA;&gt; you need some pre-existing secure communications channel.&#xA;&gt;&#xA;&#xA;The exchange of the TOKEN is frequently mistaken as the chicken-and-egg&#xA;problem, but it is not so.&#xA;&#xA;To understand why this isn&#39;t chicken-and-egg, and why the TOKEN actually&#xA;adds value, consider *the scale of the communication operation needed to&#xA;exchange the TOKEN*, and *the scale of the communication operation needed&#xA;to gather data for the creation of the multisig wallet *(with or without&#xA;the TOKEN):&#xA;&#xA;1) The TOKEN itself is a single piece of data that is 64- or 96-bit. It is&#xA;small enough to be easily exchanged (even memorized) and entered into&#xA;various devices. It requires only a single round of communication, but can&#xA;protect as many rounds of communication as needed.&#xA;&#xA;2) The data needed to create the multisig wallet, on the other hand, are&#xA;quite involving:&#xA;(a) Each Signer needs to share its XPUB, which cannot be memorized&#xA;(b) The XPUBs also come with their own metadata&#xA;(c) The creation of the wallet requires at least two rounds of&#xA;communications since the Signers need to voluntarily share their XPUBs&#xA;first, only then can a Coordinator combine the XPUBs into a single multisig&#xA;script and pass back the configuration to the Signers. (Note that without a&#xA;Coordinator, you&#39;ll need O(N^2) rounds of communication).&#xA;(d) Because Signers are typically off-line cold storage, the paths between&#xA;the Signers / the Signers &lt;&gt; Coordinator likely involve multiple hops&#xA;through various media, such as unsecure USB connection. This is the way&#xA;most multisig solutions are currently being implemented. It means the XPUBs&#xA;and the multisig configuration are vulnerable to leaking and/or&#xA;modifications.&#xA;&#xA;Note that (d) is especially problematic for remote multisig setups. The&#xA;more remote, the more potential hops along the way, the more problematic.&#xA;&#xA;So you can see that *the TOKEN ultimately reduces the problem of sharing a&#xA;large amount of sensitive data back and forth, to the sharing of a single,&#xA;small piece of data upfront.* An added advantage of this approach is that&#xA;if the parties fail to establish a shared TOKEN, the scheme fails with no&#xA;harm done.&#xA;&#xA;The Coordinator, on the other hand, adds value by solving the O(n^2)&#xA;communication problem. Some minimal amount of trust is needed for the&#xA;Coordinator, but this can be greatly mitigated by a number of ways that we&#xA;have defined in the spec, such as:&#xA;* Signers must check that their XPUBs are included in the final descriptor&#xA;* Signers must display to the user the multisig configuration: M/N,&#xA;relative position(s) of XPUBs, etc.&#xA;* Signers must display the full descriptor upon user request for manual&#xA;inspection - this one is important because it means that the new scheme&#xA;cannot be worse than the status quo.&#xA;* Signers are recommended to display a preview of the first receive&#xA;address(es).&#xA;&#xA;All in all, the Coordinator&#39;s role helps ease the setup process, while its&#xA;ability to pull off any shenanigans is greatly limited.&#xA;&#xA;Best,&#xA;Hugo&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210409/fadc12cb/attachment-0001.html&gt;</html></oembed>