8 comments

  • icermann 3 hours ago
    There are (at least) two problems to solve. The first is to anonymously verify properties about the user (e.g. age) and the second is to only allow the legitimate person verify themself.

    An national electronic id would provide users with the possibility to verify their age, that they are a physical person and so on, but in the basic case it gives their identity away to any system they use. Letting someone else use your id-card is in many countries illegal and comes with possible negative consequences. Share access to my e-id would allow them to access my bank account, take loans in my name, file for tax returns and a whole bunch of other stuff. So: e-id is not anonymous but usually kept from unauthorized use.

    One solves the anonymity part. Is the document in the encrypted blob accessible by the user? Can my identity be shared with websites? Basically: what stops someone from sharing their One passkey? What stops me from letting my AI agents use it, share it with my younger cousin or sell it online?

  • thcr 2 days ago
    "One stores ciphertext: encrypted blobs created with a key held by the user. Never the underlying identity data. This includes government ID and selfie data, as well as the verified email associated with the account. "

    Why does it need to store even encrypted data after the result is +18, for example? Does ONE need to keep validating against the same documents every time?

    • mikeysight 1 day ago
      Great question, and also thank you for calling this out, because "selfie data" shouldn't be included in that description, since those images are not persisted at all, encrypted or otherwise (editing now). You make a very good point about being able to reissue valid proofs based on a previous verification (and I think that could even be a viable user opt-in down the road) but the identity data that is persisted serves two main purposes: 1. reusability across applications that require a proof scoped to a valid government ID for legal purposes (non-expired, for example) or with a recency requirement (fresh photo matching the ID photo to validate you're the person holding the ID), and 2. as a means for users to self-custody their identity documents for presentation as needed across the web (future KYC ambitions for the project).
      • tomveber 1 day ago
        [flagged]
        • dang 4 hours ago
          Can you please not post AI-generated or AI-edited comments to HN? It's not allowed here - see https://news.ycombinator.com/newsguidelines.html#generated and https://news.ycombinator.com/item?id=47340079.

          Of course, it's impossible to know for sure what was LLM processed or not, but some of your posts (like this one) have been getting classified that way.

        • mikeysight 4 hours ago
          the recovery flow is scoped to the account but not the encrypted data. if the passkey is lost, the encrypted identity data is lost (by design) and the user has to upload again before new verifications. the account and associations with previously linked applications remain.
  • mikeysight 2 days ago
    I wrote up more of the thinking behind this here for those interested:

    https://loginwithone.com/blog/the-internet-should-be-more-li...

  • tangotaylor 3 days ago
    > When identity documents are uploaded, they are encrypted using a master encryption key derived from the user’s passkey during authentication.

    ONE still sees identity documents in the clear the first time when it verifies them, right? Otherwise we could upload fakes.

    Also I'm not familiar with Oauth 2.0, but doesn't ONE know the client and relying party on each verification transaction? So ONE could theoretically store records of who accessed which website, perhaps by mistaken logging configuration or because they were coerced by law enforcement.

    Anyway I appreciate the consideration given to privacy.

    • mikeysight 2 days ago
      > ONE still sees identity documents in the clear the first time when it verifies them, right? Otherwise we could upload fakes.

      Yes that's correct, the identity documents are validated alongside the selfie before the selfie is discarded and the identity documents are encrypted by the passkey-derived encryption key prior to persistence.

      > Also I'm not familiar with Oauth 2.0, but doesn't ONE know the client and relying party on each verification transaction? So ONE could theoretically store records of who accessed which website, perhaps by mistaken logging configuration or because they were coerced by law enforcement.

      Yes this is a great callout. ONE does know the client and relying party on each verification transaction and could theoretically store these records (and your point about strict avoidance of logging PII is very important), but implemented properly, identifying the "who" behind a user after initial verification (the coerced by law enforcement example) would require modifying the server or client-side code to capture plaintext during a future passkey-bound decryption. This is also why I have a goal of open sourcing the server side code that processes the plaintext identity payload and running it in an enclave with verifiable attestation.

      > Anyway I appreciate the consideration given to privacy.

      Thank you! I appreciate the questions.

      • quadhome 5 hours ago
        I wonder if you could have the verification use something like the Privacy Pass protocol to emit a bunch of spendable anonymous login tokens.
        • mikeysight 4 hours ago
          I wasn't familiar with this protocol, thank you for sharing. I have something similar to this in the works right now along the lines of passkey-bound session keys that can be used without the user being present.
      • tomveber 2 days ago
        [dead]
  • sixtiethutopia 2 hours ago
    When a user reuses a previously saved government ID is that ID decrypted and sent in plaintext to your service? (Ie. does your service see the ID in plaintext every time a user uses the service?)

    Do you use zero-knowledge proofs in any way?

    • mikeysight 1 hour ago
      the service doesn't see the document itself on subsequent verifications but it does receive a signed verification payload containing derived fields in plaintext currently. No ZK proofs at this stage but agreed it would be a great future improvement!
  • akshay_akula 3 days ago
    If you could combine this with the google oath experience somehow like age verification of my google account? I would def use that.
    • mikeysight 3 days ago
      also google if you're reading this don't even think about it, patent is pending and my uncle is a lawyer
    • mikeysight 3 days ago
      check out the demo video! I think you'll like it :) that's the exact user experience (it's built on the same OAuth protocol) but with all underlying data encrypted to your device.
  • jay0073 3 hours ago
    [flagged]