- From: Andrea D'Intino <andrea@dyne.org>
- Date: Thu, 8 Feb 2024 13:49:53 +0100
- To: W3C Credentials CG <public-credentials@w3.org>
- Cc: "John, Anil" <anil.john@hq.dhs.gov>, Manu Sporny <msporny@digitalbazaar.com>
- Message-ID: <85b0d46b-fdb2-48f8-8e27-7895b087e797@dyne.org>
Dear all, I'm posting this after some discussion with Manu. We have implemented Dilithium signatures (from the NIST PQC https://csrc.nist.gov/Projects/post-quantum-cryptography/selected-algorithms-2022) in our Zenroom VM (https://dev.zenroom.org/#/pages/zencode-scenarios-qp) a while ago, along with it we have implemented: - a DID method that includes Dilithium pk, specs: https://dyne.org/W3C-DID/#dilithium2verificationkey and DID: https://did.dyne.org/dids/did:dyne:sandbox.genericissuer:GPgX3sS1nNp7fgLWvvTSw4jUaEDLuBTNq5eJhvkVD9ER - a quick&rough API that produces a Dilithium signed W3C-VC (it still needs some work, this is a PoC!) You can check the API here: /curl -X 'POST' \ 'https://apiroom.net/api/genericissuer/issuer-w3c-vc-dilithium.chain' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "data": { "claims": { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://www.w3.org/2018/credentials/examples/v1" ], "id": "http://example.edu/credentials/1872", "type": [ "VerifiableCredential", "AlumniCredential" ], "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "alumniOf": { "id": "did:example:c276e12ec21ebfeb1f712ebc6f1", "name": [ { "value": "Example University", "lang": "en" }, { "value": "Exemple d'\''Université", "lang": "fr" } ] } } } } }'/ Basically: - you pass the API a *"data" : { "claims": {...} } * where "claims" is any json that you want to get signed (I didn't do any validation on the input) - the Dilithium signature of "claims" is created and inserted in the "proof" as "proofValue" as url64 (our default is base64, I changed it based on Manu's input about Multibase). - most of the proof is hard-coded, apart from the "created" (the epoch of the server), the "id" (the sha256 of the Dilithium signature). - The code producing the signature and verification can also run in the browser/mobile - Our implementation of the Dilithium signatures is tested against the vectors publish by NIST (we're using Dilithium2 see: https://github.com/dyne/Zenroom/blob/master/test/vectors/dilithium2.rsp ) The resulting Dilithium signature is 3227 bytes. The other two NIST PQC signatures are SPHINCS+ (signature is 30KB) and Falcon (signatures is 666-1280 bytes, speed/RAM performances as similar to ECDSA). If anyone is interested, we could work further on the the Dilihium W3C-VC to make it fully compliant, we may as well implement Falcon signatures. Looking forward for your comments :-) | Andrea D'Intino | +45 21 62 79 18 | Project Manager |https://Dyne.org think &do tank | software to empower communities | ⚷ crypto κρυπτο крипто गुप्त् 加密הצפנה المشفره On 29/01/2024 23.24, John, Anil wrote: > > >We now have the first public technical demonstration of cryptographic > layering[1] (aka parallel signatures) on a Verifiable Credential that > > >uses government approved cryptographic algorithms (FIPS-140) for full > and selective disclosure of a VC, as well > > >as unlinkable signatures using BBS, to achieve advanced privacy > protections. > > >What this means is that a single Verifiable Credential can be issued > that meets all government requirements when it comes to cryptographic > > >algorithms as well as one that addresses privacy concerns highlighted > by civil society and existing government privacy regulations. > > This is excellent to finally see this working in practice! > Congratulations! > > I am particularly interested to note that this implementation can also > be used to demonstrate what is actually meant by unlinkable digital > signatures: > > * Issue a ECDSA-SD protected credential and present to a Verifier > asking for ‘Country Only’ multiple times (and see that the > signature remains the same) > * Issue a BBS protected credential and present it to a Verifier > asking for ‘Country Only’ multiple times (and see that the > signatures do NOT remain the same) > > Manu – Three questions: > > 1. Does this approach allow for the support of quantum safe signature > schemes as another option down the line when those become more > specified? > 2. Does this approach allow for the support of anoncred based > signatures in parallel with others? > 3. It sounds like the wallet has a specific role here >> “I'll pick > the one that the Verifier will accept and that maximizes privacy > for the Holder: BBS”; which also implies that the wallet could > choose to be NOT select the most privacy preserving option << > which then follows that this is an area that people who are making > choices between wallets need to be aware and be educated on what > the wallet could do behind the scenes. Is my understanding correct > here? > > Best Regards, > > Anil > > Anil John > > Technical Director, Silicon Valley Innovation Program > > Science and Technology Directorate > > US Department of Homeland Security > > Washington, DC, USA > > Schedule a meeting with me (30 minutes; non-DHS people only) > <https://outlook.office.com/bookwithme/user/6250c4b6cae94d549b6db87b72b0b6d5@hq.dhs.gov?anonymous&ep=plink> > > Time Zone: UTC-05:00 (US Eastern Time) > > Email Response Time – 24 Hours or more; I sometimes send emails > outside of business days/times because it works for me; please do not > feel any obligation to reply to them outside of your normal working > patterns. > > A picture containing graphical user interface Description > automatically generated > <https://www.dhs.gov/science-and-technology>/Users/holly.johnson/Library/Containers/com.microsoft.Outlook/Data/Library/Caches/Signatures/signature_1972159395 > > This document contains pre-decisional and/or deliberative process > information exempt from mandatory disclosure under the Freedom of > Information Act, 5 U.S.C. 552(b)(5). Do not release without prior > approval of the Department of Homeland Security. >
Received on Thursday, 8 February 2024 12:50:09 UTC