Skip to content
This repository has been archived by the owner on Dec 9, 2024. It is now read-only.

Commit

Permalink
Cre8/issue93 (#94)
Browse files Browse the repository at this point in the history
* - move schemas to root folder
- remove tech ready level
- remove implementations for profiles

Signed-off-by: Mirko <mirkomollik@gmail.com>

* remove companies from field

Signed-off-by: Mirko <mirkomollik@gmail.com>

* remove unnecessary information

Signed-off-by: Mirko <mirkomollik@gmail.com>

* add description for crypto agility

Signed-off-by: Mirko <mirkomollik@gmail.com>

* remove redundant profile

Signed-off-by: Mirko <mirkomollik@gmail.com>

* add link to haip profile

Signed-off-by: Mirko <mirkomollik@gmail.com>

* fix link to diip

Signed-off-by: Mirko <mirkomollik@gmail.com>

* rename revocation to status

Signed-off-by: Mirko <mirkomollik@gmail.com>

---------

Signed-off-by: Mirko <mirkomollik@gmail.com>
  • Loading branch information
cre8 authored Oct 26, 2023
1 parent 6083651 commit f910cbf
Show file tree
Hide file tree
Showing 111 changed files with 237 additions and 298 deletions.
8 changes: 4 additions & 4 deletions article.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ In this paper, we aim to describe the rationale behind the credential profile ma

## Methodology

For the creation of the credential profile matrix, a group of domain experts gathered first at the Internet Identity Workshop in its 34th incarnation (IIWXXIV) in Mountain View in April 2022. They kicked off with listening to experts for different VC types and formats, starting to gather data in a structured way, to ultimately be able to compare them in defined categories. This lead to a definition for a _credential profile_: a configuration of the credential format, signing algorithm, revocation algorithm and key management. These properties are then further drilled down, e.g. looking at technical traits like selective disclosure, crypto agility, or hardware support, and adoption criteria like standardization, technology readiness level, or implementation support.
For the creation of the credential profile matrix, a group of domain experts gathered first at the Internet Identity Workshop in its 34th incarnation (IIWXXIV) in Mountain View in April 2022. They kicked off with listening to experts for different VC types and formats, starting to gather data in a structured way, to ultimately be able to compare them in defined categories. This lead to a definition for a _credential profile_: a configuration of the credential format, signing algorithm, status algorithm and key management. These properties are then further drilled down, e.g. looking at technical traits like selective disclosure, crypto agility, or hardware support, and adoption criteria like standardization, technology readiness level, or implementation support.

For example, what is typically refered to as AnonCreds resolves to the credential profile "AnonCreds + CL + Indy Revocation + did:indy + link secrets".

Expand Down Expand Up @@ -69,7 +69,7 @@ The credential format and the signature algorithm are in scope, as the choice in

## Guide

The [credential profile comparison matrix](https://docs.google.com/spreadsheets/d/1Z4cYfjbbE-rABcfC-xab8miocKLomivYMUFibOh9BVo) is maintained as a living spreadsheat in google sheets. In the following sections we will describe the properties listed in the comparison matrix. Some properties are present in various tables. We will discuss these first. Then we will list the properties specific to the credential format, signature algorithm, revocation algorithm, key management and trust management.
The [credential profile comparison matrix](https://docs.google.com/spreadsheets/d/1Z4cYfjbbE-rABcfC-xab8miocKLomivYMUFibOh9BVo) is maintained as a living spreadsheat in google sheets. In the following sections we will describe the properties listed in the comparison matrix. Some properties are present in various tables. We will discuss these first. Then we will list the properties specific to the credential format, signature algorithm, status algorithm, key management and trust management.

### Common Properties

Expand Down Expand Up @@ -195,7 +195,7 @@ In the comparison matrix, with regard to cryptography, we discuss signatures and

The performance of signature algorithms can impact the user-friendliness of the wallet implementing the credential profile. We express the generation of the signature in terms of seconds.

### Properties of Revocation Algorithm
### Properties of Status Algorithm

Revocation is when the issuer no longer vouches for the correctness of the information in the credential that was issued to the holder. A reason for revocation could be that the information in the credential is simply not true anymore (holder is not a student anymore) or the information has to be periodically renewed (like a passport).

Expand All @@ -213,7 +213,7 @@ This property is about whether an issuer can observe a verifier checking that a

#### Offline Friendliness

In some use cases presentations have to be verified in an offline setting, such as when presenting a mobile driving license to a police officer on the road. The verifier should then also be able to check the revocation status of the credential. This property defines whether a revocation algorithm allows for an offline workflow.
In some use cases presentations have to be verified in an offline setting, such as when presenting a mobile driving license to a police officer on the road. The verifier should then also be able to check the revocation status of the credential. This property defines whether a status algorithm allows for an offline workflow.

### Properties of Key Management

Expand Down
22 changes: 22 additions & 0 deletions criterias.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Categories

In this document we will define the different categories that are used to compare the different solutions. The goal is to have objective categories to compare the different solutions.
When the value is able to be measured, we will define the measurement method. If the value is not able to be measured, we will define the criteria to evaluate the value.

## Credential Format

### Crypto Agility

**Field type: boolean**

A credential format has crypto agility, when I am able to set **ANY** kind of cryptographic algorithm for the signature. This is important for future proofing the credential format.
A format that has specific requirements like "you can use any pairing friendly curve" is not crypto agile, because it is not possible to use any other kind of algorithm like RSA or one of the post quantum algorithms. In this case the field has to be set to "False", but can be added with more information like:

```json
"Crypto Agility": {
"Value": false,
"Description": "only elliptic curves are supported"
},
```

The value of the field is independent from the implementation support. E.g. one SDK allows you to pass any kind of algorithm, but another implementation only supports one specific algorithm.
2 changes: 1 addition & 1 deletion data/Credential-Format/ACDC-(KERI).json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "ACDC (KERI)",
"Specification": "https://datatracker.ietf.org/doc/html/draft-ssmith-acdc-00",
"Standardization (Body, Process)": "IETF (intention to go to Blockchain WG)",
Expand Down
3 changes: 1 addition & 2 deletions data/Credential-Format/AnonCred.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "AnonCred",
"Implementation Support (e.g. Libraries) / Active Community": "https://github.com/hyperledger/indy-shared-rs\n\nCommunity plans to pull anon creds implementation out of Indy and facilitate multi independent implementations through the specification (see respective cell)",
"Specification": "https://anoncreds-wg.github.io/anoncreds-spec/",
"Standardization (Body, Process)": "Community Spec (draft)",
"Technology Readiness Level": 6,
"Encoding Scheme": "JSON",
"Rich Schemas/Semantic": false,
"Crypto Agility": false,
Expand Down
2 changes: 1 addition & 1 deletion data/Credential-Format/CESR-CESR-Proof.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "CESR/CESR Proof",
"Specification": "https://www.ietf.org/archive/id/draft-pfeairheller-cesr-proof-00.html",
"Standardization (Body, Process)": "IETF (intention to go to Blockchain WG)",
Expand Down
3 changes: 1 addition & 2 deletions data/Credential-Format/CWT.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "CWT",
"Specification": "https://www.rfc-editor.org/rfc/rfc8392.html",
"Standardization (Body, Process)": "IETF",
"Technology Readiness Level": 8,
"Encoding Scheme": "CBOR",
"Crypto Agility": true,
"Selective Disclosure": false,
Expand Down
7 changes: 3 additions & 4 deletions data/Credential-Format/Gordian-Envelope.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "Gordian Envelope",
"Implementation Support (e.g. Libraries) / Active Community": "command-line MVP https://github.com/BlockchainCommons/envelope-cli-swift, rust libraries on the way.",
"Implementation Support (e.g. Libraries) / Active Community": "command-line MVP https://github.com/BlockchainCommons/envelope-cli-swift",
"IPR Policy": "SPDI:BSD-2-Clause-Patent https://spdx.org/licenses/BSD-2-Clause-Patent.html",
"Specification": "https://github.com/BlockchainCommons/BCSwiftSecureComponents (this will be moved elsewhere soon).",
"Specification": "https://github.com/BlockchainCommons/BCSwiftSecureComponents",
"Standardization (Body, Process)": "IETF (for CBOR registration) W3C (for did method and alternative DID document and credentials data format)",
"Technology Readiness Level": 3,
"Encoding Scheme": "CBOR",
"Rich Schemas/Semantic": false,
"Crypto Agility": true,
Expand Down
2 changes: 1 addition & 1 deletion data/Credential-Format/ICAO-DTC.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "ICAO DTC",
"Standardization (Body, Process)": "ICAO",
"Selective Disclosure": true
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "Idemix attribute-based credential",
"Implementation Support (e.g. Libraries) / Active Community": "https://github.com/privacybydesign/gabi (cryptography), https://github.com/privacybydesign/irmago (semantics, wallet, servers, more)",
"Specification": "None. Protocol documented here: https://irma.app/docs/irma-protocol",
"Standardization (Body, Process)": "Privacy by Design Foundation",
"Technology Readiness Level": 9,
"Encoding Scheme": "JSON",
"Rich Schemas/Semantic": true,
"Crypto Agility": {
Expand Down
3 changes: 1 addition & 2 deletions data/Credential-Format/JWP.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "JWP",
"Specification": "https://github.com/json-web-proofs/json-web-proofs",
"Standardization (Body, Process)": "DIF",
"Technology Readiness Level": 3,
"Encoding Scheme": "JSON ?",
"Crypto Agility": true,
"Selective Disclosure": {
Expand Down
2 changes: 1 addition & 1 deletion data/Credential-Format/JWT-VC.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "JWT-VC",
"Rich Schemas/Semantic": false,
"Crypto Agility": true,
Expand Down
3 changes: 1 addition & 2 deletions data/Credential-Format/JWT.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "JWT",
"Implementation Support (e.g. Libraries) / Active Community": "https://jwt.io/libraries",
"IPR Policy": "https://trustee.ietf.org/documents/trust-legal-provisions/",
"Specification": "https://datatracker.ietf.org/doc/rfc7519/",
"Standardization (Body, Process)": "IETF",
"Technology Readiness Level": 9,
"Encoding Scheme": "compact and JSON serialization",
"Rich Schemas/Semantic": false,
"Crypto Agility": true,
Expand Down
2 changes: 1 addition & 1 deletion data/Credential-Format/LDP-VC.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "LDP-VC",
"Implementation Support (e.g. Libraries) / Active Community": "https://github.com/digitalbazaar/jsonld.js",
"IPR Policy": "https://www.w3.org/Consortium/Patent-Policy-20200915/#sec-Requirements",
Expand Down
4 changes: 1 addition & 3 deletions data/Credential-Format/MDOC.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "MDOC",
"Implementation Support (e.g. Libraries) / Active Community": "Apple, Idemia, Thales, HID global, GET Group, Google, Panasonic, Spruce",
"Specification": "ISO 18013-5",
"Standardization (Body, Process)": "ISO",
"Technology Readiness Level": 7,
"Encoding Scheme": "CBOR",
"Rich Schemas/Semantic": false,
"Crypto Agility": true,
Expand Down
3 changes: 1 addition & 2 deletions data/Credential-Format/SD-JWT-VC.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "SD-JWT-VC",
"IPR Policy": "https://trustee.ietf.org/documents/trust-legal-provisions/",
"Specification": "https://datatracker.ietf.org/doc/html/draft-terbu-oauth-sd-jwt-vc",
"Standardization (Body, Process)": "IETF (OAuth WG)",
"Technology Readiness Level": 4,
"Encoding Scheme": "JSON",
"Rich Schemas/Semantic": false,
"Crypto Agility": true,
Expand Down
3 changes: 1 addition & 2 deletions data/Credential-Format/SD-JWT.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "SD-JWT",
"Implementation Support (e.g. Libraries) / Active Community": "https://github.com/oauthstuff/draft-selective-disclosure-jwt#implementations",
"IPR Policy": "https://trustee.ietf.org/documents/trust-legal-provisions/",
"Specification": "https://datatracker.ietf.org/doc/draft-ietf-oauth-selective-disclosure-jwt/",
"Standardization (Body, Process)": "IETF (OAuth WG)",
"Technology Readiness Level": 6,
"Encoding Scheme": "JSON, JSON-LD",
"Rich Schemas/Semantic": false,
"Crypto Agility": true,
Expand Down
3 changes: 1 addition & 2 deletions data/Credential-Format/VC-(1.1).json
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "VC (1.1)",
"Implementation Support (e.g. Libraries) / Active Community": "https://jwt.io/libraries",
"IPR Policy": "https://www.w3.org/Consortium/Patent-Policy-20200915/#sec-Requirements",
"Specification": "https://www.w3.org/TR/vc-data-model/",
"Standardization (Body, Process)": "W3C",
"Technology Readiness Level": 8,
"Encoding Scheme": "JSON, JSON-LD",
"Rich Schemas/Semantic": true,
"Crypto Agility": true,
Expand Down
3 changes: 1 addition & 2 deletions data/Credential-Format/x509.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
{
"$schema": "../../viewer/src/schemas/Credential-Format.json",
"$schema": "../../schemas/Credential-Format.json",
"Credential Format": "x509",
"Standardization (Body, Process)": "ITUT",
"Technology Readiness Level": 9,
"Encoding Scheme": "ASN.1",
"Rich Schemas/Semantic": false,
"Crypto Agility": true,
Expand Down
2 changes: 1 addition & 1 deletion data/Credential-Profile/AnonCreds-cardano.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "../../viewer/src/schemas/Credential-Profile.json",
"$schema": "../../schemas/Credential-Profile.json",
"Credential Profile is commonly called": "AnonCreds with cardano blockchain",
"Credential Profile Description": "AnonCreds with cardano blockchain",
"Credential Format": "AnonCred",
Expand Down
4 changes: 2 additions & 2 deletions data/Credential-Profile/AnonCreds-cheqd.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"$schema": "../../viewer/src/schemas/Credential-Profile.json",
"$schema": "../../schemas/Credential-Profile.json",
"Credential Profile is commonly called": "AnonCreds with did:cheqd",
"Credential Profile Description": "AnonCreds with did:cheqd",
"Credential Format": "AnonCred",
"Signing Algorithm": "CL",
"Revocation Algorithm": "Indy Revocation",
"Status Algorithm": "Indy Revocation",
"Key Management (Issuer)": "did:cheqd",
"Key Management (Holder)": "link secrets",
"Formal Specification": "https://docs.cheqd.io/identity/advanced/anoncreds"
Expand Down
7 changes: 3 additions & 4 deletions data/Credential-Profile/AnonCreds-indy.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
{
"$schema": "../../viewer/src/schemas/Credential-Profile.json",
"$schema": "../../schemas/Credential-Profile.json",
"Credential Profile is commonly called": "AnonCreds with did:indy",
"Credential Profile Description": "Well-known default profile in all Hyperledger Indy implementations. A favoured profile due to selective disclosure and predicate capability as well as privacy-preserving revocation mechanism. Standardization in community spec in progress (July 2022).",
"Credential Format": "AnonCred",
"Signing Algorithm": "CL",
"Revocation Algorithm": "Indy Revocation",
"Status Algorithm": "Indy Revocation",
"Key Management (Issuer)": "did:indy",
"Key Management (Holder)": "link secrets",
"Trust Management": "Verifier knows Issuers",
"Formal Specification": "https://hyperledger.github.io/anoncreds-spec/",
"Implementations": "Hyperledger Indy + Aries, Esatus, iGrant Data Wallet, British Columbia CANDY profile https://github.com/ICCS-ISAC/Candy"
"Formal Specification": "https://hyperledger.github.io/anoncreds-spec/"
}
4 changes: 2 additions & 2 deletions data/Credential-Profile/AnonCreds-web.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"$schema": "../../viewer/src/schemas/Credential-Profile.json",
"$schema": "../../schemas/Credential-Profile.json",
"Credential Profile is commonly called": "AnonCreds with did:web",
"Credential Profile Description": "AnonCreds with did:web",
"Credential Format": "AnonCred",
"Signing Algorithm": "CL",
"Revocation Algorithm": "Indy Revocation",
"Status Algorithm": "Indy Revocation",
"Key Management (Issuer)": "did:web",
"Key Management (Holder)": "link secrets",
"Trust Management": "Verifier knows Issuers",
Expand Down
12 changes: 0 additions & 12 deletions data/Credential-Profile/AnonCreds.json

This file was deleted.

6 changes: 3 additions & 3 deletions data/Credential-Profile/DIIP.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"$schema": "../../viewer/src/schemas/Credential-Profile.json",
"$schema": "../../schemas/Credential-Profile.json",
"Credential Profile is commonly called": "Decentralized Identity Interop Profile",
"Formal Specification": "https://dutchblockchaincoalition.github.io/DDIP/",
"Formal Specification": "https://dutchblockchaincoalition.github.io/DIIP/",
"Credential Profile Description": "Decentralized Identity Interop Profile",
"Credential Format": "JWT-VC",
"Signing Algorithm": "ECDSA",
"Revocation Algorithm": "Status List 2021",
"Status Algorithm": "Status List 2021",
"Key Management (Issuer)": "did:web",
"Key Management (Holder)": "did:jwk",
"Issuance Protocol": "OpenID4VCI",
Expand Down
4 changes: 2 additions & 2 deletions data/Credential-Profile/EBSI.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"$schema": "../../viewer/src/schemas/Credential-Profile.json",
"$schema": "../../schemas/Credential-Profile.json",
"Credential Profile is commonly called": "EBSI",
"Credential Profile Description": "[Profile description goes here]",
"Credential Format": "JWT-VC",
"Signing Algorithm": "ECDSA",
"Revocation Algorithm": "Status List 2021",
"Status Algorithm": "Status List 2021",
"Key Management (Issuer)": "did:ebsi",
"Key Management (Holder)": "did:key",
"Trust Management": "EBSI Trust Registries"
Expand Down
8 changes: 5 additions & 3 deletions data/Credential-Profile/HAIP.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
{
"$schema": "../../viewer/src/schemas/Credential-Profile.json",
"$schema": "../../schemas/Credential-Profile.json",
"Credential Profile is commonly called": "HAIP",
"Credential Profile Description": "OpenID4VC High Assurance Interoperability Profile with SD-JWT-VC",
"Formal Specification": "https://vcstuff.github.io/oid4vc-haip-sd-jwt-vc/draft-oid4vc-haip-sd-jwt-vc.html#name-authors-addresses",
"Credential Format": "SD-JWT-VC",
"Signing Algorithm": "ECDSA",
"Revocation Algorithm": "JWT/CWT status list",
"Status Algorithm": "JWT/CWT status list",
"Key Management (Issuer)": ".well-known/jwt-issuer",
"Key Management (Holder)": "raw public keys (jwk)",
"Implementations": "https://trustee.ietf.org/documents/trust-legal-provisions/"
"Issuance Protocol": "OpenID4VCI",
"Presentation Protocol": "OpenID4VP"
}
4 changes: 2 additions & 2 deletions data/Credential-Profile/ICAO-DTC.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"$schema": "../../viewer/src/schemas/Credential-Profile.json",
"$schema": "../../schemas/Credential-Profile.json",
"Credential Profile is commonly called": "ICAO DTC",
"Credential Profile Description": "[Profile description goes here]",
"Credential Format": "ICAO DTC",
"Signing Algorithm": "ECDSA",
"Revocation Algorithm": "SLTD database (travel and identity documents)",
"Status Algorithm": "SLTD database (travel and identity documents)",
"Key Management (Issuer)": "raw public keys (none jwk)",
"Key Management (Holder)": "raw public keys (none jwk)",
"Trust Management": "X.509 certificates"
Expand Down
Loading

0 comments on commit f910cbf

Please sign in to comment.