<oembed><type>rich</type><version>1.0</version><title>Jonas Nick [ARCHIVE] wrote</title><author_name>Jonas Nick [ARCHIVE] (npub1at…y3z5a)</author_name><author_url>https://yabu.me/npub1at3pav59gkeqz9kegzqhk2v4j4r435x42ytf23pxs8crt74tuc8s2y3z5a</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 text discusses concerns about the proposed scheme for blind music and suggests an alternative approach that may be worth exploring.&#xA;📝 Original message:&#xA;Hi Tom,&#xA;&#xA;I&#39;m not convinced that this works. As far as I know blind musig is still an open&#xA;research problem. What the scheme you propose appears to try to prevent is that&#xA;the server signs K times, but the client ends up with K+1 Schnorr signatures for&#xA;the aggregate of the server&#39;s and the clients key. I think it&#39;s possible to&#xA;apply a variant of the attack that makes MuSig1 insecure if the nonce commitment&#xA;round was skipped or if the message isn&#39;t determined before sending the nonce.&#xA;Here&#39;s how a malicious client would do that:&#xA;&#xA;- Obtain K R-values R1[0], ..., R1[K-1] from the server&#xA;- Let&#xA;     R[i] := R1[i] + R2[i] for all i &lt;= K-1&#xA;     R[K] := R1[0] + ... + R1[K-1]&#xA;     c[i] := H(X, R[i], m[i]) for all i &lt;= K.&#xA;   Using Wagner&#39;s algorithm, choose R2[0], ..., R2[K-1] such that&#xA;     c[0] + ... + c[K-1] = c[K].&#xA;- Send c[0], ..., c[K-1] to the server to obtain s[0], ..., s[K-1].&#xA;- Let&#xA;     s[K] = s[0] + ... + s[K-1].&#xA;   Then (s[K], R[K]) is a valid signature from the server, since&#xA;     s[K]*G = R[K] + c[K]*a1*X1,&#xA;   which the client can complete to a signature for public key X.&#xA;&#xA;What may work in your case is the following scheme:&#xA;- Client sends commitment to the public key X2, nonce R2 and message m to the&#xA;   server.&#xA;- Server replies with nonce R1 = k1*G&#xA;- Client sends c to the server and proves in zero knowledge that c =&#xA;   SHA256(X1 + X2, R1 + R2, m).&#xA;- Server replies with s1 = k1 + c*x1&#xA;&#xA;However, this is just some quick intuition and I&#39;m not sure if this actually&#xA;works, but maybe worth exploring.</html></oembed>