<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2023-06-09T12:22:28Z</updated>
  <generator>https://yabu.me</generator>

  <title>Nostr notes by Joe Miyamoto Philips [ARCHIVE]</title>
  <author>
    <name>Joe Miyamoto Philips [ARCHIVE]</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://yabu.me/npub1rxe6xx0tvp69u4ah8q7rl2v8yryawr9wv4zc2z2p59jupsdnnffslrdmna.rss" />
  <link href="https://yabu.me/npub1rxe6xx0tvp69u4ah8q7rl2v8yryawr9wv4zc2z2p59jupsdnnffslrdmna" />
  <id>https://yabu.me/npub1rxe6xx0tvp69u4ah8q7rl2v8yryawr9wv4zc2z2p59jupsdnnffslrdmna</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://yabu.me/nevent1qqsxhdn25e3kdtpqvqq77305pxf6yf3zt630twgme7ptfmvumch0f2czyqvm8gceads8ghjhkuurc0afsusvn4cv4ej5tpgfgxsktsxpkwd9xxfref6</id>
    
      <title type="html">📅 Original date posted:2021-02-03 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxhdn25e3kdtpqvqq77305pxf6yf3zt630twgme7ptfmvumch0f2czyqvm8gceads8ghjhkuurc0afsusvn4cv4ej5tpgfgxsktsxpkwd9xxfref6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvc7xg94sy8k0ml5c2wcvyhmv78ddwptvx7h6s2gv9pcaprj3ytwcgd9w30&#39;&gt;nevent1q…9w30&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-03&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi all.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I want to point out another application of Discrete-Log selling on PTLC&lt;br/&gt;lightning since I could not find anyone else mentioning it (in particular,&lt;br/&gt;I could not find in the Nadav Kohen&amp;#39;s list here. [1] )&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The protocol may be obvious to most of the members here, but I believe its&lt;br/&gt;application has some impact on the way people make anonymity-focused&lt;br/&gt;applications with LN, so I want to have some feedback.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;In short, by using ElGamal encryption, we can sell not only a discrete-log&lt;br/&gt;but also an elliptic curve point which satisfies some requirements. This&lt;br/&gt;includes KVAC [2] which is used for WabiSabi [3] and Signal app [4].&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; disclaimer: I&amp;#39;m not a cryptography or math major, the following reasoning&lt;br/&gt;might be wrong at the fundamental level. Please correct me if I&amp;#39;m wrong.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## Notations&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;* G ... Elliptic curve base point.&lt;br/&gt;&lt;br/&gt;* H ... some additional NUMS&lt;br/&gt;&lt;br/&gt;* x, X = x * G ... secret and public key&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;For ZKPoK, I will use Camenisch-Stadler like notation&lt;br/&gt;&lt;br/&gt;PK{ (secret values) : statements about secret values to prove. }&lt;br/&gt;&lt;br/&gt;e.g. For DLEQ proof. assume the verifier already have some points P_1, P_2&lt;br/&gt;&lt;br/&gt;PK{ (x, y) : P_1 =  x * G and P_2 = y * H and x = y }&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;# Protocols&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## pay-for ElGamal decryption key&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Quick recap, ElGamal encryption for message M (= m * G) is&lt;br/&gt;&lt;br/&gt;(r * G, M &#43; r * P)&lt;br/&gt;&lt;br/&gt;where r is some blinding factor and P is a shared secret (P = p * G)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Imagine the Buyer knows some point (X_h = x * H), and he wants another&lt;br/&gt;point (X_g  = x * G).&lt;br/&gt;&lt;br/&gt;The Seller knows x and he wants to sell the point X_g but he does NOT want&lt;br/&gt;to reveal its discrete log x to the buyer.&lt;br/&gt;&lt;br/&gt;(There is not much of a situation like this, but I will explain it later.)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;In this case, the Seller can send its elgamal encryption and sell its&lt;br/&gt;decryption key.&lt;br/&gt;&lt;br/&gt;Seller:&lt;br/&gt;&lt;br/&gt;* Generate ephemeral encryption key S = s * G&lt;br/&gt;&lt;br/&gt;* Encrypt X_g  with random blinding r ... (c1, c2) := (r * G, X_g &#43; r * S)&lt;br/&gt;&lt;br/&gt;* Send (c1, c2) and S to the Buyer.&lt;br/&gt;&lt;br/&gt;* Also, send PK{(x, r, s) :  c1 = r * G and c2 = x * G &#43; r * S and X_h = x&lt;br/&gt;* H }&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Buyer&lt;br/&gt;&lt;br/&gt;* Verifies the ZKPoK, he can be sure that the plaintext will be X_g that he&lt;br/&gt;wants.&lt;br/&gt;&lt;br/&gt;* Make a payment offer to the Seller with S.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Seller&lt;br/&gt;&lt;br/&gt;* Receive the payment by revealing s&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Buyer&lt;br/&gt;&lt;br/&gt;* Decrypt the ciphertext by s to get the X_g ... (X_g := c2 - c1 * s)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## Pay for Keyed Verification Anonymous Credential. (KVAC)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;We assume MAC_{GGM} scheme for the KVAC. [2]&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;* attributes encoded in the credential is m_1, ... m_n&lt;br/&gt;&lt;br/&gt;* secret keys for the issuer=verifier is r, x_0, x_1, ... x_n&lt;br/&gt;&lt;br/&gt;* Public params for the issuer are (C_x0 = x_0 * G &#43; r * H), (X_1 = x_1 *&lt;br/&gt;G, ... X_n = x_n * G)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The credential is of the form (U, U&amp;#39;) where U&amp;#39; = U * (x_0 &#43; x_1 * m_1 &#43; ...&lt;br/&gt;&#43; x_n * m_n)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Issuer:&lt;br/&gt;&lt;br/&gt;* get random point `U`&lt;br/&gt;&lt;br/&gt;* compute U&amp;#39; = U * (x_0 &#43; x_1 * m_1 &#43; ... &#43; x_n &#43; m_n)&lt;br/&gt;&lt;br/&gt;* sends U and ElGamal encryption of U&amp;#39; to the Buyer with blinding factor k&lt;br/&gt;and ephemeral encryption key S.&lt;br/&gt;&lt;br/&gt;  * (c1, c2) = (k * G, U&amp;#39; &#43; k * S)&lt;br/&gt;&lt;br/&gt;* Also send ZKPoK to tell the ciphertext is for correct U&amp;#39;&lt;br/&gt;&lt;br/&gt;  * PK{(x_0, ... x_n, x_0, r, k, s, U’) :  U&amp;#39; = U * (x_0 &#43; x_1 * m_1 &#43; ...&lt;br/&gt;&#43; x_n * m_n)  and  C_x0 = G * x_0 &#43; H * r and X_1 = x_1 * G and ... and X_n&lt;br/&gt;= x_n * G and  c1 = k * G and c2 = U&amp;#39; &#43; k * S }&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Then Buyer can buy s as the same as above.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;# Why this matters&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I believe that KVAC has great potential as a building block of anonymous&lt;br/&gt;web apps.&lt;br/&gt;&lt;br/&gt;Its MAC-based construction is more performant and easy to prove the&lt;br/&gt;security compared to the similar system for the PKI based anonymous&lt;br/&gt;credentials (e.g. U-Prove [5] and ACL [6]).&lt;br/&gt;&lt;br/&gt;And it&amp;#39;s a great fit for commercial purpose applications which do not have&lt;br/&gt;to cooperate with other entities when defining the protocol. (Which is not&lt;br/&gt;the case for an Attribute based credential system in general.)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The reason so far it has not been used widely is, IMHO, it&amp;#39;s because there&lt;br/&gt;is no way to charge its users anonymously. [7]&lt;br/&gt;&lt;br/&gt;Another problem is Sybil attack. In general, the DoS protection is a great&lt;br/&gt;concern for anonymous applications.&lt;br/&gt;&lt;br/&gt;So we need users to commit something &amp;#34;scarce&amp;#34; to prevent it.&lt;br/&gt;&lt;br/&gt;It is why Signal requires its users to register their telephone number&lt;br/&gt;(Maybe I&amp;#39;m wrong about this, not sure).&lt;br/&gt;&lt;br/&gt;(WabiSabi cleverly uses the user&amp;#39;s UTXO as the scarce resource to mitigate&lt;br/&gt;this problem.)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;And of course, these problems get fixed by LN, if users have to pay to get&lt;br/&gt;their service, the service does not have to ban the users by DoS-ing&lt;br/&gt;anymore. So I think the LN-based payment and KVAC-based app fits very well.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Thus, if the service wants to grant some right to do something with their&lt;br/&gt;server resource to users in an unlinkable fashion, then I believe&lt;br/&gt;exchanging the credential in this way has a benefit.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Miyamoto.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; P.S. I may have sent the same mail with a different address. Please ignore&lt;br/&gt;it.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[1]:&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-April/002647.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-April/002647.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[2]: &lt;a href=&#34;https://eprint.iacr.org/2013/516.pdf&#34;&gt;https://eprint.iacr.org/2013/516.pdf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[3]: &lt;a href=&#34;https://github.com/zkSNACKs/WabiSabi&#34;&gt;https://github.com/zkSNACKs/WabiSabi&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[4]: &lt;a href=&#34;https://signal.org/blog/pdfs/signal_private_group_system.pdf&#34;&gt;https://signal.org/blog/pdfs/signal_private_group_system.pdf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[5]: &lt;a href=&#34;https://www.microsoft.com/en-us/research/project/u-prove/&#34;&gt;https://www.microsoft.com/en-us/research/project/u-prove/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[6]: &lt;a href=&#34;https://core.ac.uk/download/pdf/193377167.pdf&#34;&gt;https://core.ac.uk/download/pdf/193377167.pdf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[7]: DuckDuckGo has an interesting solution for this. But it is not a&lt;br/&gt;general solution for all kinds of apps and I doubt how good it works&lt;br/&gt;compared to charging a fee by LN.&lt;br/&gt;&lt;a href=&#34;https://spreadprivacy.com/duckduckgo-revenue-model/&#34;&gt;https://spreadprivacy.com/duckduckgo-revenue-model/&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210203/3ec104bc/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210203/3ec104bc/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:01:54Z</updated>
  </entry>

</feed>