- From: Kyle Den Hartog <kyle@pryvit.tech>
- Date: Tue, 27 Sep 2022 14:14:33 +1300
- To: Alex Tweeddale <alex@cheqd.io>
- Cc: public-credentials@w3.org
- Message-ID: <CA+_U+e23-Who2uUrB=Z6q9zDwgW9D2cWn3MxOGNc+SqoBVtv3Q@mail.gmail.com>
> I am curious as to why the number 131,072 was chosen, and also at what point it is recommended that this length should be extended. AFAIK this number was arbitrarily set as a reasonable size between the tradeoff of the size of the credential versus the herd privacy intending to be achieved. With this design each credential has the potential to be uniquely identified via a 1/131,072 chance until the bit associated with a particular credential is linked. At that point the subject associated with the bit has de-anonymized themselves as long as the status list credential remains accessible. > For example, after 10,000 Credentials have been issued and assigned to bitstring values within this Status List, should the length of this bitstring be extended accordingly and scale with the number of issued Credentials? I'd argue no as this can be used as a temporal tracking technique for anyone watching the status list to be able to detect how many associated bits are actually in use. E.g. if the size is 16KB then it's <10,000 in use and if it's 32KB then it's >10,000 credentials. Instead, the size of these status lists should be set at the time of creation and bits should be randomly assigned to the default setting from the outset. E.g. if the credential is unrevoked from the outset then all the bits should be set to unrevoked until they are revoked. There's a lot of privacy tradeoffs that come up here depending on the use case at hand so it's important to be careful with this design. It's great for getting a quick and easy revocation solution in play, but there's more to be done on the privacy side of things if you're aiming for privacy by design. > Using a Verifiable Credential hosted by the issuer to store the entire bitstring seems to be a single point of failure for the ecosystem. This is highly use case specific. In the case of legal enabled identity this is often a feature not a bug. Many decentralization maximalists will argue otherwise, so it just depends on the goals of your system. > I note that there are suggestions to perhaps use a Content Delivery Network and caching to remove this reliance on requests to a single server. This was intended to prevent a phone home problem such that the issue of the status list couldn't detect how often a credential is being checked by the issuer. It's a bit of a hacky solution to the problem but it works as long as the issuer isn't coordinating with the CDN. E.g. Cloudflare will provide some basic analytics which could be used to perform analysis on the usage of credentials. One thing coming down the pipeline that could improve the state of art for this would be oblivious HTTP [1] as that uses a cryptographic technique to decorrelate the IP address from the content in a way that reduces the information granted to the issuer of the status list which can assist in improving the privacy here as well. > Is there a desire to store the Status List on a Verifiable Data Registry as a resource? The hyperledger Indy community did mention this at one point, but I'm not sure what the status of it is. Personally, I think it's an unnecessary usage of a ledger as the only thing you're getting from a ledger is a breakage of the phone home connection between the issuer and the verifier which can just as easily be achieved with a CDN at greater scale. However, to each is their own and it will be highly dependent on the architecture of your system on which one makes most sense for you. > Using this model, the Status List could be retrieved using a DID Resolver, and this would remove any relationship needed between an issuer and a verifier. This would still be susceptible to a trusted 3rd party (just like you'd face with a CDN as well). Again, depends on the architecture and how much you want to rely on common abstractions already in play like ledgers or did resolvers. Some people will choose more, others less. > I've put together a draft document on how this resource module could extend to supporting Status List 2021 from a technical perspective <https://docs.cheqd.io/identity/ledger-resources/using-on-ledger-resources-to-support-statuslist2021>. I'd be really keen to hear the community's thoughts on whether this is a good idea, or whether this could lead to further privacy risks. One advantage to not publishing these in a common place goes back to the original point about a user de-anonymizing themself once they've revealed their bit location within the string. To argue a point for using a centralized server for this, one advantage here is that the endpoint can add an authorization check on top to be able to limit the ability for the verifier to permanently track the revocation status of a user once they've de-anonymized themselve. Another point of consideration is that most ledgers don't have a pub/sub model for being notified about status updates to particular credentials which can in some cases be useful. Again, this varies greatly depending on the use case here and whether this would be considered a feature or a bug. However, one point for consideration with using a ledger is that it effectively behaves like a certificate revocation list that's commonly used with X.509 certs today so could be mapped to that threat model and actors in the case of a status list that's based around public credentials (like X.509 is commonly used for with TLS). -Kyle [1]: https://datatracker.ietf.org/doc/html/draft-thomson-http-oblivious-02 On Tue, Sep 27, 2022 at 1:45 PM Alex Tweeddale <alex@cheqd.io> wrote: > Hey CCG folks 👋 > > I'm currently doing some research into Status List 2021 and I have a > couple of questions around its implementation. I was hoping one of you > might be able to help: > > *1. Minimum bitstring length and herd privacy* > > I understand that there is a minimum bitstring length/size > <https://w3c-ccg.github.io/vc-status-list-2021/#revocation-bitstring-length> > in order to preserve the privacy of Holders and make it harder for an > issuer to correlate which Holders are using their Credentials and when they > are using them. > > I am curious as to why the number 131,072 was chosen, and also at what > point it is recommended that this length should be extended. For example, > after 10,000 Credentials have been issued and assigned to bitstring values > within this Status List, should the length of this bitstring be extended > accordingly and scale with the number of issued Credentials? > > *2. Centralization of the bitstring* > > Using a Verifiable Credential hosted by the issuer to store the entire > bitstring seems to be a single point of failure for the ecosystem. I note > that there are suggestions to perhaps use a Content Delivery Network and > caching to remove this reliance on requests to a single server. > > Is there a desire to store the Status List on a Verifiable Data Registry > as a resource? At cheqd, we've recently developed our resource module > <https://docs.cheqd.io/identity/ledger-resources/creating-a-resource> which > would be capable of storing/identifying a Status List with a unique DID > URL, associated with a DID Document. Using this model, the Status List > could be retrieved using a DID Resolver, and this would remove any > relationship needed between an issuer and a verifier. > > I've put together a draft document on how this resource module could > extend to supporting Status List 2021 from a technical perspective > <https://docs.cheqd.io/identity/ledger-resources/using-on-ledger-resources-to-support-statuslist2021>. > I'd be really keen to hear the community's thoughts on whether this is a > good idea, or whether this could lead to further privacy risks. > > Looking forward to hearing feedback / suggestions / warnings > -- > > Alex Tweeddale > > Governance & Compliance Lead > > Schedule a meeting <https://calendly.com/alex-tweeddale/introductory-call> > > cheqd.io <https://www.cheqd.io/> | Twitter <https://twitter.com/cheqd_io> > | LinkedIn <https://linkedin.com/company/cheqd-identity> | Telegram > <https://t.me/cheqd> >
Received on Tuesday, 27 September 2022 01:14:58 UTC