<oembed><type>rich</type><version>1.0</version><title>Erik Aronesty [ARCHIVE] wrote</title><author_name>Erik Aronesty [ARCHIVE] (npub1y2…5taj0)</author_name><author_url>https://yabu.me/npub1y22yec0znyzw8qndy5qn5c2wgejkj0k9zsqra7kvrd6cd6896z4qm5taj0</author_url><provider_name>njump</provider_name><provider_url>https://yabu.me</provider_url><html>📅 Original date posted:2023-07-24&#xA;🗒️ Summary of this message: The email discusses the potential vulnerabilities of a proposed scheme and suggests an alternative approach that may be worth exploring.&#xA;📝 Original message:&#xA;You can&#39;t choose R if you provide posk&#xA;&#xA;On Mon, Jul 24, 2023 at 10:31 AM Jonas Nick via bitcoin-dev &lt;&#xA;bitcoin-dev at lists.linuxfoundation.org&gt; wrote:&#xA;&#xA;&gt; Hi Tom,&#xA;&gt;&#xA;&gt; I&#39;m not convinced that this works. As far as I know blind musig is still&#xA;&gt; an open&#xA;&gt; research problem. What the scheme you propose appears to try to prevent is&#xA;&gt; that&#xA;&gt; the server signs K times, but the client ends up with K+1 Schnorr&#xA;&gt; signatures for&#xA;&gt; the aggregate of the server&#39;s and the clients key. I think it&#39;s possible to&#xA;&gt; apply a variant of the attack that makes MuSig1 insecure if the nonce&#xA;&gt; commitment&#xA;&gt; round was skipped or if the message isn&#39;t determined before sending the&#xA;&gt; nonce.&#xA;&gt; Here&#39;s how a malicious client would do that:&#xA;&gt;&#xA;&gt; - Obtain K R-values R1[0], ..., R1[K-1] from the server&#xA;&gt; - Let&#xA;&gt;      R[i] := R1[i] + R2[i] for all i &lt;= K-1&#xA;&gt;      R[K] := R1[0] + ... + R1[K-1]&#xA;&gt;      c[i] := H(X, R[i], m[i]) for all i &lt;= K.&#xA;&gt;    Using Wagner&#39;s algorithm, choose R2[0], ..., R2[K-1] such that&#xA;&gt;      c[0] + ... + c[K-1] = c[K].&#xA;&gt; - Send c[0], ..., c[K-1] to the server to obtain s[0], ..., s[K-1].&#xA;&gt; - Let&#xA;&gt;      s[K] = s[0] + ... + s[K-1].&#xA;&gt;    Then (s[K], R[K]) is a valid signature from the server, since&#xA;&gt;      s[K]*G = R[K] + c[K]*a1*X1,&#xA;&gt;    which the client can complete to a signature for public key X.&#xA;&gt;&#xA;&gt; What may work in your case is the following scheme:&#xA;&gt; - Client sends commitment to the public key X2, nonce R2 and message m to&#xA;&gt; the&#xA;&gt;    server.&#xA;&gt; - Server replies with nonce R1 = k1*G&#xA;&gt; - Client sends c to the server and proves in zero knowledge that c =&#xA;&gt;    SHA256(X1 + X2, R1 + R2, m).&#xA;&gt; - Server replies with s1 = k1 + c*x1&#xA;&gt;&#xA;&gt; However, this is just some quick intuition and I&#39;m not sure if this&#xA;&gt; actually&#xA;&gt; works, but maybe worth exploring.&#xA;&gt; _______________________________________________&#xA;&gt; bitcoin-dev mailing list&#xA;&gt; bitcoin-dev at lists.linuxfoundation.org&#xA;&gt; https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#xA;&gt;&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230724/fc27bc0b/attachment-0001.html&gt;</html></oembed>