<oembed><type>rich</type><version>1.0</version><author_name>npub19g47w5ewcqlpd7n07wpkp5cvcu2gjwrse0vl47l0avwl9hu933xsqct5d0</author_name><author_url>https://nostr.ae/npub19g47w5ewcqlpd7n07wpkp5cvcu2gjwrse0vl47l0avwl9hu933xsqct5d0</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2021-02-11&#xA;📝 Original message:I think the key issue here is avoiding xpub key reuse in multisig. Not only&#xA;in the future with Schnorr, but we need it today!&#xA;&#xA;Current common practice by hardware wallets is the 48&#39;/0&#39;/0&#39;/2&#39; derivation&#xA;for segwit multsig ( e.g.&#xA;[90081696/48&#39;/0&#39;/0&#39;/2&#39;]xpub6DYLEkDfCdHzh5FHGHDJksQvFqu6kYANa1sfo6fA8n5ZWkSwyCRVVzyq9LY2eNGB6T9BKDeGJp2ZarjRZHd7WB95nSaFEDhFMK6zSV6D49b&#xA;) is the only one used for ALL multisigs offered by that hardware wallet.&#xA;&#xA;As Pieter said, leveraging a HD path parameters can help, but we need a&#xA;better, less reusable path for the index.&#xA;&#xA;I personally suggest a simpler solution, which is to create an index using&#xA;a PBKDF of the Account Policy (a descriptor with all xpubs and keys&#xA;removed), plus optional notes. (BTW, I think double sha256 or HMAC is&#xA;overkill).&#xA;&#xA;Example: for the reference bit descriptor that might result in:&#xA;&#xA;```&#xA;wsh(sortedmulti(2,xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB/1/0/*,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/0/0/*))&#xA;```&#xA;&#xA;What Blockchain Commons (and the Airgapped Wallet Community) call a policy&#xA;map would be&#xA;&#xA;```&#xA;wsh(sortedmulti(1,,,))&#xA;```&#xA;&#xA;A PBKDF of that as would be unique for all 2 of 3 segwig transactions. With&#xA;the addition of the addition of the Policy Map creators optional note, it&#xA;would be truly unique. The Policy Map and/or PBKDF are small and could&#xA;easily added to existing APIs.&#xA;&#xA;So for legacy hardware, we can use existing 48&#39; subtree, but 3&#39; as the&#xA;format for this form (2&#39; is segwit), then the desktop can just ask for the&#xA;/48&#39;/0&#39;/0&#39;/3&#39;/PBKDF&#39; when it requests a new xpub from the hardware token.&#xA;More sophisticated Airgapped apps you can send&#xA;&#34;wsh(sortedmulti(1,,,))&#34;+label and let the cosigner app do the PBKDF, and&#xA;optionally allow it return something different in a full keyset (i.e.&#xA;&#34;[90081696/48&#39;/0&#39;/0&#39;/3&#39;/af3948cg…&#39;/]xpub6DYLEk…&#34;, and then the requesting&#xA;app, knowing that it is different from the PBKDF can know what to do if it&#xA;needs to what to ask for in the future.&#xA;&#xA;The other advantage of this technique is that the cosigner app can know&#xA;what policy it is participating in, before the descriptor is completed. It&#xA;may decide it doesn&#39;t want to participate in some funky 4:9 with a weird&#xA;script, and not return an xpub at all.&#xA;&#xA;Long term I think a commitment scheme should be used, so that you don&#39;t&#xA;reveal what xpub you offered until all the parties xpubs are shared, but as&#xA;Pieter said, we can do that at the same time we do the musig. But we need&#xA;to prevent xpub reuse NOW, and I think my proposal easy and could the job.&#xA;&#xA;-- Christopher Allen, Blockchain Commons&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210211/30d4ab91/attachment.html&gt;</html></oembed>