<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: MatteoFrigo</title><link>https://news.ycombinator.com/user?id=MatteoFrigo</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 11 Apr 2026 11:41:20 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=MatteoFrigo" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Age verification, child protection and economic power]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.cyberverso.net/age-verification-child-protection-and-economic-power/">https://www.cyberverso.net/age-verification-child-protection-and-economic-power/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47567234">https://news.ycombinator.com/item?id=47567234</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 29 Mar 2026 20:57:10 +0000</pubDate><link>https://www.cyberverso.net/age-verification-child-protection-and-economic-power/</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=47567234</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47567234</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "The Age Verification Trap: Verifying age undermines everyone's data protection"]]></title><description><![CDATA[
<p>ZKP is integrated in Google Wallet and has been running in production for a few months.  We (Google) released the ZKP library as open source last year (this is the library used in production).<p>Announcement: <a href="https://blog.google/innovation-and-ai/technology/safety-security/opening-up-zero-knowledge-proof-technology-to-promote-privacy-in-age-assurance/" rel="nofollow">https://blog.google/innovation-and-ai/technology/safety-secu...</a><p>Library: <a href="https://github.com/google/longfellow-zk" rel="nofollow">https://github.com/google/longfellow-zk</a><p>Paper: <a href="https://eprint.iacr.org/2024/2010" rel="nofollow">https://eprint.iacr.org/2024/2010</a><p>Afterwards, folks from ISRG produced an independent implementation
<a href="https://github.com/abetterinternet/zk-cred-longfellow" rel="nofollow">https://github.com/abetterinternet/zk-cred-longfellow</a> with our blessing and occasional help.  I don't know if the authors would call it "production ready" yet, but it is at least code complete, fast enough, and interoperable with ours.</p>
]]></description><pubDate>Mon, 23 Feb 2026 20:23:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47128236</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=47128236</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47128236</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "Finland looks to introduce Australia-style ban on social media"]]></title><description><![CDATA[
<p>Here is one way: <a href="https://eprint.iacr.org/2024/2010" rel="nofollow">https://eprint.iacr.org/2024/2010</a><p>Our (Google) implementation: <a href="https://github.com/google/longfellow-zk" rel="nofollow">https://github.com/google/longfellow-zk</a><p>An independent implementation by the Internet Security Research Group: <a href="https://github.com/abetterinternet/zk-cred-longfellow" rel="nofollow">https://github.com/abetterinternet/zk-cred-longfellow</a>  Still being developed but already interoperable with ours.<p>European age verification app: <a href="https://ageverification.dev/av-doc-technical-specification/docs/architecture-and-technical-specifications/#71-zero-knowledge-proofs" rel="nofollow">https://ageverification.dev/av-doc-technical-specification/d...</a></p>
]]></description><pubDate>Sat, 31 Jan 2026 23:49:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=46842112</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=46842112</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46842112</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "EFF launches Age Verification Hub"]]></title><description><![CDATA[
<p>Yes.  The whole trick is a delicate balance between 1) committing to enough information that uniquely pins down the solution, assuming that one can open all the lock boxes, and 2) not opening too many lock boxes so that the verifier does not learn the solution.</p>
]]></description><pubDate>Fri, 12 Dec 2025 13:25:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=46243903</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=46243903</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46243903</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "EFF launches Age Verification Hub"]]></title><description><![CDATA[
<p>Yes.  However, at some point there needs to be some unforgeable piece of hardware that prevents copying the document.  I am a big fan of yubikeys and I wish everybody used them, but the reality is that people lose them way more often than they lose their phone.</p>
]]></description><pubDate>Fri, 12 Dec 2025 12:14:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46243414</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=46243414</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46243414</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "EFF launches Age Verification Hub"]]></title><description><![CDATA[
<p>This post is restricted to the context of the European Union and is intended to be factual.<p>The EU age verification app is intended to be a pilot to the EU Digital Identity Wallet (EUDIW), which EU law requires to be deployed everywhere in Europe by the end of 2026. (Thus your "worry" is in fact the explicit plan of record.)<p>The EUDIW will store more attributes than age.  Think of it as a digital form of a passport (with name, address, etc.).  The exact set of attributes is determined by local laws.<p>Thus, the DOCUMENT that you obtain is tied to you, and of course the state knows what is in the DOCUMENT since the state creates the document in the first place.<p>The state does not generate proofs.  The phone generates proofs.  Given a proof (and only the proof), nobody can associate the proof to the phone or to you.<p>Now I switch to less factual statements, which are still approximately correct.<p>Why would you trust the wallet software not to phone home to the state or us (Google)?  The EUDIW regulations require that the wallet software be open source.  However, states will only issue DOCUMENT to their own certified wallet software---you cannot just take the open source and recompile it, since the state won't issue DOCUMENT to your uncertified wallet.  (Maybe your gym will issue a gym membership to your raspberry pi wallet, since it's not a big deal.)<p>The reason for this strictness is that the EUDIW is intended for official or semi-official uses.  For example, you can open a bank account with it, or use it as ID to get a mortgage.  The bank must by law accept DOCUMENT, the state guarantees that DOCUMENT is correct, and you get better privacy than handling over a piece of plastic that is then photocopied by who knows whom.  This is the tradeoff of the current EU law.  It would be inappropriate for this kind of official, passport-like documents to store attributes such as your profession (journalist or whatever), and nobody is talking about it.</p>
]]></description><pubDate>Fri, 12 Dec 2025 12:08:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=46243379</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=46243379</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46243379</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "EFF launches Age Verification Hub"]]></title><description><![CDATA[
<p>Another excellent question.  The current answer in the EU seems to be "you need a phone".  My preferred answer (despite being one of the Google guys who designed the ZKP mechanism) would be that the government sends you some sort of plastic card with a chip that does not tie you to a phone.  Still fighting that battle.</p>
]]></description><pubDate>Fri, 12 Dec 2025 00:51:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=46239570</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=46239570</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46239570</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "EFF launches Age Verification Hub"]]></title><description><![CDATA[
<p>I am someone with "deep knowledge", but HN is not the proper place for this discussion.  See <a href="https://people.cs.georgetown.edu/jthaler/ProofsArgsAndZK.html" rel="nofollow">https://people.cs.georgetown.edu/jthaler/ProofsArgsAndZK.htm...</a> for the gory details.<p>Here is a hopefully simple example of how this ZKP thing may even be possible.  Imagine that you give me a Sudoku puzzle.  I solve it, and then I want to prove to you that I have solved it without telling you the solution.  It sounds impossible, but here is one way to do it.
I compute the solution.  I randomly scramble the digits 1-9 and I put the scrambled solution in a 9x9 array of lock boxes on a table.  I have the keys to the 81 locks but I am not giving you the key yet.  You randomly ask me to open either 1) one random row chosen by you; 2) one random column chosen by you; 3) one random 3x3 block chosen by you; or 4) the cells corresponding to the original puzzle you posed to me.  In total you have 28 possibilities, and assume that you choose them with equal probability.  You tell me what you want and I open the corresponding lockboxes.  You verify that the opened lock boxes are consistent with me knowing a solution, e.g. all numbers in a row are distinct, the 3x3 block consists of distinct numbers, etc.  If I am cheating, then at least one of your 28 choices will be inconsistent, and you catch me with probability 1/28, so if we repeat this game 1000 times, and I don't know the solution, you will catch me with probability at least 1-(1/28)^1000 which is effectively 1.  However, every time we repeat the game, I pick a different random scrambling of the integers 1-9, so you don't learn anything about the solution.<p>All of ZKP is a fancy way to 1) encode arbitrary computations in this sort of protocol, and 2) amplify the probability of success via clever error-correction tricks.<p>The other thing you need to know is that the protocol I described requires interaction (I lock the boxes and you tell me which ones to open), but there is a way to remove the interaction.  Observe that in the Sudoku game above, all you are doing is flipping random coins and sending them to me.  Of course you cannot let me pick the random coins, but if we agree that the random coins are just the SHA256 hash of what I told you, or something else similarly unpredictable, then you will be convinced of the proof even if the "coins" are something that I compute myself by using SHA256.  This is called the "Fiat-Shamir transformation".<p>How do we implement the lock boxes?  I tell you SHA256(NONCE, VALUE) where the NONCE is chosen by me.  Given the hash you cannot compute VALUE.  To open the lock box, I tell you NONCE and VALUE, which you believe under the assumption that I cannot find a collision in SHA256.</p>
]]></description><pubDate>Fri, 12 Dec 2025 00:49:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=46239546</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=46239546</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46239546</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "EFF launches Age Verification Hub"]]></title><description><![CDATA[
<p>Excellent question.  More generally, what prevents me from copying the credential and giving it to somebody else?<p>The currently favored approach works like this.  The DOCUMENT contains a device public key DPK.  The corresponding secret key is stored in some secure hardware on the phone, designed so that I (or malware or whatever) cannot extract the secret key from the secure hardware.  Think of it as a yubikey or something, but embedded in the phone.  Every presentation flow will demand that the secure element produce a signature of a random challenge from the RP under the secret key of the secure hardware.  In the ZKP presentation, the ZKP prover produces a proof that this signature verifies correctly, without disclosing the secret key of the secure hardware.<p>In your example, the parent could give the phone to the kid.  However, in current incarnations, the secure hardware refuses to generate a signature unless unlocked by some kind of biometric identification, e.g. fingerprint.  The fingerprint never leaves the secure hardware.<p>How does the issuer (e.g. the republic of France) know that DOCUMENT is bound to a given fingerprint?  This is still under discussion, but as a first bid, a French citizen goes to city hall with his phone and obtains DOCUMENT after producing a fingerprint on the citizen's phone (as opposed to a device belonging to the republic of France).  You can imagine other mechanisms based on physical tokens (yubikeys or embedded chips in credit cards, or whatever).  Other proposals involve taking pictures compared against a picture stored in DOCUMENT.  As always, one needs to be clear about the threat model.<p>In all these proposals the biometric identification unlocks the secure hardware into signing a nonce.  The biometrics themselves are not part of the proof and are not sent to the relying party or to the issuer.</p>
]]></description><pubDate>Fri, 12 Dec 2025 00:31:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46239397</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=46239397</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46239397</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "EFF launches Age Verification Hub"]]></title><description><![CDATA[
<p>FWIW, not that it matters, the proper acronyms are EUDI (EU Digital Itentity) and EUDIW (EUDI Wallet).  DIW is not used.</p>
]]></description><pubDate>Fri, 12 Dec 2025 00:04:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=46239178</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=46239178</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46239178</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "EFF launches Age Verification Hub"]]></title><description><![CDATA[
<p>This is, of course, very technical, but here is how it works at a high level.<p>In the non-ZKP presentation, the "holder" (phone) sends the credential to the relying party (website), and the RP executes some verification algorithm.  In the ZK presentation, the <i>holder</i> executes the verification algorithm and sends to the RP a proof that the algorithm was executed correctly.<p>The "proof" has this magical property that it reveals nothing other than the check passed.  (You will have to take on faith that such proofs exist.)  In particular, if the check was the predicate "I have a signature by ISSUER on HASH, and SHA256(DOCUMENT)==HASH, and DOCUMENT["age_gt_18"]=TRUE", anybody looking at the proof cannot infer ISSUER, HASH, DOCUMENT, or HASH, or nothing else really.  "Cannot infer" means that the proof is some random object and all HASH, DOCUMENT, ISSUER, etc. that satisfy the predicate are equally likely, assuming that the randomness used in the proof is private to the holder.  Moreover, a generating a proof uses fresh randomness each time, so given two proofs of the same statement, you still cannot tell whether they come from the same ISSUER, HASH, DOCUMENT, ...</p>
]]></description><pubDate>Thu, 11 Dec 2025 23:13:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=46238674</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=46238674</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46238674</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "EFF launches Age Verification Hub"]]></title><description><![CDATA[
<p><a href="https://ageverification.dev/av-doc-technical-specification/docs/architecture-and-technical-specifications/#71-zero-knowledge-proofs" rel="nofollow">https://ageverification.dev/av-doc-technical-specification/d...</a></p>
]]></description><pubDate>Thu, 11 Dec 2025 21:46:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=46237648</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=46237648</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46237648</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "Imgur pulls out of UK as data watchdog threatens fine"]]></title><description><![CDATA[
<p>I don't dispute your general sentiment that the ZK terminology is abused.  However, at least one serious attempt exists to deploy a real ZKP system.<p>Specifically, our system [1] is available as open source [2] and work is underway to implement it in the EU age verification app [3].  I understand that this thread is about the UK and not the EU, and I make no claims about the UK.  The system is not theory, but it is already shipping in Google Wallet [4] and in the Open Wallet Foundation multipaz system [5].<p>[1] <a href="https://eprint.iacr.org/2024/2010" rel="nofollow">https://eprint.iacr.org/2024/2010</a><p>[2] <a href="https://github.com/google/longfellow-zk" rel="nofollow">https://github.com/google/longfellow-zk</a><p>[3] <a href="https://ageverification.dev/av-doc-technical-specification/docs/annexes/annex-B/annex-B-zkp/" rel="nofollow">https://ageverification.dev/av-doc-technical-specification/d...</a><p>[4] <a href="https://blog.google/products/google-pay/google-wallet-age-identity-verifications/" rel="nofollow">https://blog.google/products/google-pay/google-wallet-age-id...</a><p>[5] <a href="https://github.com/openwallet-foundation/multipaz" rel="nofollow">https://github.com/openwallet-foundation/multipaz</a></p>
]]></description><pubDate>Wed, 01 Oct 2025 21:27:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=45443765</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=45443765</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45443765</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "EU age verification app not planning desktop support"]]></title><description><![CDATA[
<p>See <a href="https://github.com/google/longfellow-zk" rel="nofollow">https://github.com/google/longfellow-zk</a></p>
]]></description><pubDate>Wed, 24 Sep 2025 21:21:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=45366117</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=45366117</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45366117</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "Opening up ‘Zero-Knowledge Proof’ technology"]]></title><description><![CDATA[
<p>Great question.  The current thinking, at least in high level-of-assurance situations, is this.  The identity document is only usable in cooperation with a hardware security element.  The relying party picks a random nonce and sends it to the device.  The device signs the nonce using the SE, and either sends the signature back to the relying party (in the non-ZKP case), or produces a ZKP that the signature is correct.  The SE requires some kind of biometric authentication to work, e.g. fingerprint.  So you cannot set up a bot that mints attestations.  (All this has nothing to do with ZKP and would work the same way without ZKP.)<p>In general there is a tradeoff between security and privacy, and different use cases will need to choose where they want to be on this spectrum.  Our ZKP library at least makes the privacy end possible.</p>
]]></description><pubDate>Fri, 04 Jul 2025 08:03:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=44462274</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=44462274</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44462274</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "Opening up ‘Zero-Knowledge Proof’ technology"]]></title><description><![CDATA[
<p>You got it.  There are a few nuisances, e.g. the "theorem statement" must be hashed as well so that proving that name=Mickey has a different oracle than proving that name=Goofy, but your basic understanding is correct.</p>
]]></description><pubDate>Fri, 04 Jul 2025 07:07:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=44461876</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=44461876</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44461876</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "Opening up ‘Zero-Knowledge Proof’ technology"]]></title><description><![CDATA[
<p>No.  ZK has a technical definition I don't want to get into, but note that the described system is deterministic and it always produces the same proof for Alice on a given day, and the proof for a later day can be derived from the proof for an earlier day.  So two proofs can be linked back to Alice, and thus the system is not ZK.  You need some kind of randomness for ZK.</p>
]]></description><pubDate>Fri, 04 Jul 2025 06:47:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=44461776</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=44461776</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44461776</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "Opening up ‘Zero-Knowledge Proof’ technology"]]></title><description><![CDATA[
<p>See <a href="https://github.com/eu-digital-identity-wallet/eudi-doc-architecture-and-reference-framework">https://github.com/eu-digital-identity-wallet/eudi-doc-archi...</a> for a reference to the nuances on all these topics, at least in the context of the European Union.  Other locales have different problems and different solutions.<p>If you think you have a better idea shoot me an email.</p>
]]></description><pubDate>Fri, 04 Jul 2025 06:24:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=44461659</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=44461659</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44461659</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "Opening up ‘Zero-Knowledge Proof’ technology"]]></title><description><![CDATA[
<p>As the Google guy who did the system, I really don't want to engage in this discussion.<p>I'll just say that the b-systems solve a different problem, and for the problem solved by our system there is currently no other solution available.<p>We spoke with Ying Tong and her colleagues from the Ethereum foundation.  They have a project investigating which ZK technology would be best for digital credentials, and they have ran a few benchmarks at <a href="https://hackmd.io/@clientsideproving/zkIDBenchmarks" rel="nofollow">https://hackmd.io/@clientsideproving/zkIDBenchmarks</a>  For reference, our implementation runs the benchmark in about 200ms on the same hardware.  The ETHF folks have had access to our code for a while and they agree with this result, but they decided not to publish numbers until the Google code was open-sourced for all.  Our system is thus about 10x faster than the closest contender <i>for this problem</i>.<p>I don't want to make any general claims about who is better than whom.  Our system is designed for our problem, and it's not a surprise that another system designed for another problem would perform worse on our problem.  We are big fans of the Binius system of Diamond and Posen at Irreducible, and there is a chance that Binius may eventually work better than our stuff.  That's however not the case today.<p>You also have to be careful about which hardware to use.  Our implementation is single-threaded no GPU because it has to run on all phones everywhere in the world.  Whether or not one can do better on a high-end GPU is irrelevant to us.<p>Either way, "stale" is not a word I would use.  The word I would use is "works today".</p>
]]></description><pubDate>Fri, 04 Jul 2025 06:16:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=44461626</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=44461626</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44461626</guid></item><item><title><![CDATA[New comment by MatteoFrigo in "Opening up ‘Zero-Knowledge Proof’ technology"]]></title><description><![CDATA[
<p>The government gives a signed document to natural persons, and the ZK system proves that the document is signed by the government.  Bots don't have passports or driver's licenses.<p>How does the government guarantee that the natural person is such?  Various jurisdictions will decide what's good enough, but as a strawman proposal, you go in person to city hall once and upload a document to your phone.</p>
]]></description><pubDate>Fri, 04 Jul 2025 05:55:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=44461530</link><dc:creator>MatteoFrigo</dc:creator><comments>https://news.ycombinator.com/item?id=44461530</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44461530</guid></item></channel></rss>