From c6f4b05a37f363abb661aa52fa70f1e8ea0bb10a Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Mon, 22 Apr 2024 13:56:05 +0200 Subject: [PATCH 01/24] feat(dpp-verification): added logo, tags and introduction --- dpp-verification/README.md | 53 ++++++++++++++++++ .../resources/verification-logo.png | Bin 0 -> 310958 bytes 2 files changed, 53 insertions(+) create mode 100644 dpp-verification/README.md create mode 100644 dpp-verification/resources/verification-logo.png diff --git a/dpp-verification/README.md b/dpp-verification/README.md new file mode 100644 index 000000000..cf2ee5c32 --- /dev/null +++ b/dpp-verification/README.md @@ -0,0 +1,53 @@ + + +
+ DPP Verificaion Logo +
+ +# Digital Product Pass Verification Add-on + +## Tags + +> [!NOTE] +> #Cybersecurity #DataVerification #DataCertification #Catena-X #DigitalProductPassVerification #DPP #SignedDocuments #DataCredentials +> #DigitalProductPass #VerifiableCredentials #Wallets #DecentralIdenties #SSI #ProductDataExchangeTrust #Verification #Innovation #Ed25519 #JWS #Web3.0 + +## Introduction + +When talking about increasing trust in data ecosystems there are multiple possible ways to be followed. Contractual and Policy solutions can be taken into consideration to ensure data sovereignty based on analog framework agreement contracts. Blockchain solutions can be implemented to assure that transactions and ownership is mathematically proofed, creating a assertive level of trust in the complete chain. Artificial Intelligence can be used as a neutral party for doing moderation and certification of data of partners and member of the network. However if you want to maintain your data and identify under your control assuring data sovereignty and keeping it decentral the best option to choose are Decentral Identities from the W3C.  + +Decentral Identities are already used in the Catena-X Network to digitally identify parties and authorizations across all data exchanges done through an EDC from a peer to peer perspective. This technology is implemented in the current SSI concept used in the network and has been proofed to work and also to be successful when bringing trust to all the data exchanges done which take place in the network. + +The data exchanged during the peer to peer connections between EDCs can have different formats, shapes and content. It varies from use case to use case and its up to the owner of the data to choose which data will be provided to who and which one not. However once this data is exchanged there is no assertive way to determine if the data provided is really true or false. Framework agreements cover the legal part of the transaction and participation in the use cases however do not cover the specific product information assertion and confirmation of veracity. + +Product Information Certification is the way to go when it comes to creating trust over complete or partial data provided in peer to peer connections between two partners in a network. Once the consumer is allowed to visualize the data he can verify if it was certified by its data issuer or by an external auditor party. This is relevant when we start to talk about bringing the Catena-X Automotive Network to a productive environment, specially where human lives are at stake and mistakes can cause huge monetary and image losses. + +This Digital Product Pass Verification and Certification concept aims to create an assertive second layer of trust over the actual peer to peer data exchanges of Product Information. Basing it self in the SSI technology already in place in Catena-X, this concept sets the first steps for data verification statements creation  starting with the CX Generic Digital Product Pass Aspect Model. Giving the data providers the possibility of creating self signed documents confirming the information placed into the aspect models and gives data auditors the possibility to certify one or more specific attributes from Aspect Model documents that are relevant to the data provider business cases. It allows the data consumer to base its processes and decisions based on actual production data which has been assertive verified by external auditors, giving safety that not just the data issuer by also a third party has certified that specific data is true or compliant to standards. + +The technology concept consists of creating Signed Documents (Verification Statements) using the Verifiable Credentials 2.0 Technology. Which is in resume a JSON-LD structure standardized by the W3C Consortium for Web 3.0 for data trust and identity assurance. Using JSON Web Signatures (JWS) and a wallet component which is connected to Catena-X and identified by the unique company Business Partner Number (BPN), the data issuer and auditor can sign using their Ed25519 private key and the data consumer can access their public key by resolving the DID contained in the signature proof at the certified document credential. The certified data will be stored in the Data Provider infrastructure sub-model server, in order to assure the data sovereignty. Data consumer can access this data if they are allowed by the data provider simply by looking for the Digital Twin from the specific asset type or instance depending in the specific use case. This data will be retrieved using the EDC connector proxy which is protected by Policies and require data consumers to sign "odrl" contracts to maintain data sovereignty.  + +In this way decentral data exchange trust is assertive assured. Making possible and easing the transition from the Catena-X network product data exchange from Pre-Production to Production environments. Enabling better decision taking, saving possible human lives, boosting the circular economy use case, creating testification as form of digital proof for possible framework contracts trust breaks or frauds, assuring product quality and increasing employee safety when hazard materials/products are handled. + +This concept has been proofed to be of high interest from the Certification and Verification roles in the Catena-X Community, generating value for multiple use cases and bringing the Catena-X Network Data Exchange Trust Level to a totally new level. Enabling the different network parties to exchange data with electronical proof of an external party certification revision, reducing the risk of failure and error. Allowing data consumers to comfortably invest and deposit their trust in bring their data into a Catena-X Network Production Data Ecosystem Environment. diff --git a/dpp-verification/resources/verification-logo.png b/dpp-verification/resources/verification-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d848f1540d964690c1c37f9d63c4aff339f45c44 GIT binary patch literal 310958 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%0A7WIgo``p}th{^Q%bKVtm^G5E~SDP@J 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

5HcvrNtT>UN!MvushF;rJz9?Zmx|YX+AL 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 L?|h-E)xG}%!8>;N literal 0 HcmV?d00001 From fa62167636874068add9716a6afff221a21c169e Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Mon, 22 Apr 2024 15:21:48 +0200 Subject: [PATCH 02/24] feat(dpp-verification): added use cases, motivators, objectives and authors --- dpp-verification/README.md | 143 +++++++++++++++++++++++++++++-------- 1 file changed, 113 insertions(+), 30 deletions(-) diff --git a/dpp-verification/README.md b/dpp-verification/README.md index cf2ee5c32..51ff25163 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -1,32 +1,41 @@ +
- DPP Verificaion Logo + DPP Verificaion Logo +

Digital Product Pass Verification Add-on

-# Digital Product Pass Verification Add-on +| Version | v1.0 | +|---------|------| + +| | Date | +|----------------------|-------------------| +| **Created** | December 29, 2023 | +| **Lastest Revision** | April 22, 2024 | + ## Tags @@ -34,20 +43,94 @@ > #Cybersecurity #DataVerification #DataCertification #Catena-X #DigitalProductPassVerification #DPP #SignedDocuments #DataCredentials > #DigitalProductPass #VerifiableCredentials #Wallets #DecentralIdenties #SSI #ProductDataExchangeTrust #Verification #Innovation #Ed25519 #JWS #Web3.0 -## Introduction +## Authors -When talking about increasing trust in data ecosystems there are multiple possible ways to be followed. Contractual and Policy solutions can be taken into consideration to ensure data sovereignty based on analog framework agreement contracts. Blockchain solutions can be implemented to assure that transactions and ownership is mathematically proofed, creating a assertive level of trust in the complete chain. Artificial Intelligence can be used as a neutral party for doing moderation and certification of data of partners and member of the network. However if you want to maintain your data and identify under your control assuring data sovereignty and keeping it decentral the best option to choose are Decentral Identities from the W3C.  +| Name | GitHub | Role | +|-----------------------|--------------------------------------------|-----------------------------------------| +| Mathias Brunkow Moser | [@matbmoser](https://github.com/matbmoser) | Digital Product Pass Software Architect | +| | | | +| | | | -Decentral Identities are already used in the Catena-X Network to digitally identify parties and authorizations across all data exchanges done through an EDC from a peer to peer perspective. This technology is implemented in the current SSI concept used in the network and has been proofed to work and also to be successful when bringing trust to all the data exchanges done which take place in the network. +## Abstract + +When talking about increasing trust in data ecosystems there are multiple possible ways to be followed. Contractual and Policy solutions can be taken into consideration to ensure data sovereignty based on analog framework agreement contracts. Blockchain solutions can be implemented to assure that transactions and ownership is mathematically proofed, creating a assertive level of trust in the complete chain. Artificial Intelligence can be used as a neutral party for doing moderation and certification of data of partners and member of the network. However if you want to maintain your data and identify under your control assuring data sovereignty and keeping it decentral the best option to choose are Decentral Identities from the W3C. + +Decentralized Identities are already used in the Catena-X Network to digitally identify parties and authorizations across all data exchanges done through an EDC from a peer to peer perspective. This technology is implemented in the current SSI concept used in the network and has been proofed to work and also to be successful when bringing trust to all the data exchanges done which take place in the network. The data exchanged during the peer to peer connections between EDCs can have different formats, shapes and content. It varies from use case to use case and its up to the owner of the data to choose which data will be provided to who and which one not. However once this data is exchanged there is no assertive way to determine if the data provided is really true or false. Framework agreements cover the legal part of the transaction and participation in the use cases however do not cover the specific product information assertion and confirmation of veracity. Product Information Certification is the way to go when it comes to creating trust over complete or partial data provided in peer to peer connections between two partners in a network. Once the consumer is allowed to visualize the data he can verify if it was certified by its data issuer or by an external auditor party. This is relevant when we start to talk about bringing the Catena-X Automotive Network to a productive environment, specially where human lives are at stake and mistakes can cause huge monetary and image losses. -This Digital Product Pass Verification and Certification concept aims to create an assertive second layer of trust over the actual peer to peer data exchanges of Product Information. Basing it self in the SSI technology already in place in Catena-X, this concept sets the first steps for data verification statements creation  starting with the CX Generic Digital Product Pass Aspect Model. Giving the data providers the possibility of creating self signed documents confirming the information placed into the aspect models and gives data auditors the possibility to certify one or more specific attributes from Aspect Model documents that are relevant to the data provider business cases. It allows the data consumer to base its processes and decisions based on actual production data which has been assertive verified by external auditors, giving safety that not just the data issuer by also a third party has certified that specific data is true or compliant to standards. +This Digital Product Pass Verification and Certification concept aims to create an assertive second layer of trust over the actual peer to peer data exchanges of Product Information. Basing itself in the SSI technology already in place in Catena-X, this concept sets the first steps for data verification statements creation starting with the CX Generic Digital Product Pass Aspect Model. Giving the data providers the possibility of creating self signed documents confirming the information placed into the aspect models and gives data auditors the possibility to certify one or more specific attributes from Aspect Model documents that are relevant to the data provider business cases. It allows the data consumer to base its processes and decisions based on actual production data which has been assertive verified by external auditors, giving safety that not just the data issuer by also a third party has certified that specific data is true or compliant to standards. + +The technology concept consists of creating Signed Documents (Verification Statements) using the Verifiable Credentials 2.0 Technology. Which is in resume a JSON-LD structure standardized by the W3C Consortium for Web 3.0 for data trust and identity assurance. Using JSON Web Signatures (JWS) and a wallet component which is connected to Catena-X and identified by the unique company Business Partner Number (BPN), the data issuer and auditor can sign using their Ed25519 private key and the data consumer can access their public key by resolving the DID contained in the signature proof at the certified document credential. The certified data will be stored in the Data Provider infrastructure sub-model server, in order to assure the data sovereignty. Data consumer can access this data if they are allowed by the data provider simply by looking for the Digital Twin from the specific asset type or instance depending on the specific use case. This data will be retrieved using the EDC connector proxy which is protected by Policies and require data consumers to sign "odrl" contracts to maintain data sovereignty. + +In this way decentralize data exchange trust is assertive assured. Making possible and easing the transition from the Catena-X network product data exchange from Pre-Production to Production environments. Enabling better decision taking, saving possible human lives, boosting the circular economy use case, creating justification as form of digital proof for possible framework contracts trust breaks or frauds, assuring product quality and increasing employee safety when hazard materials/products are handled. + +This concept has been proved to be of high interest from the Certification and Verification roles in the Catena-X Community, generating value for multiple use cases and bringing the Catena-X Network Data Exchange Trust Level to a totally new level. Enabling the different network parties to exchange data with electronic proof of an external party certification revision, reducing the risk of failure and error. Allowing data consumers to comfortably invest and deposit their trust in bring their data into a Catena-X Network Production Data Ecosystem Environment. + +## Table of Contents + + +- [Introduction](#introduction) + - [Value Proposition Motivators](#value-proposition-motivators) + - [Objectives](#objectives) + - [Use Cases](#use-cases) + + + +# Introduction + +This Documentation contains the first concept of Data Verification in Catena-X. This verification aims to create a second layer of trust over the EDC data exchanges between consumers and data providers. Allowing auditors to verify specific attributes or complete aspect models for data providers and allowing consumers to retrieve and verify the "validity" of the verification done.  + +## Value Proposition Motivators + +When talking about certification and verification of data there are a series of motivators that create value for data exchanges done in a production environment. + +| | Motivator | Description | +|---|-----------------------|-------------------------------------------------------------------------------------------------------------------------| +| 1 | Trustworthiness | Important for **Accurate Decision Taking** and **Money Loss Avoidance** | +| 2 | Quality Assurance | Proof the quality of the products and be able to **audit product quality standards** | +| 3 | Regulatory Compliance | For regulatory reasons in some specific products a **rigorous verification process is mandatory to protect consumers.** | + +## Objectives + +When defining for the first time the way of doing certification and verification of data aspect models and digital product passports in Catena-X some objectives must be set. + +In case of the use case we are aiming our objectives are the following: + +1. **Create Value and Draft a Verification Process** + - Get external verifiers to check the data and generate verifiable credentials or certificates. + - Define a process for the business verification of data + - Investigate on the existing market solutions + - Talk with Catena-X Partners for defining a solid Verification Process draft + +2. **Implement the Verification Concept in Catena-X** + - Design a technical concept for verifying passports in Catena-X + - **“Be able to verify the data without changing the existent architecture”.** + - Investigate on existent verification solutions in Catena-X + - Research and talk with other Catena-X Components/Use Cases about how to integrate the verification in the network. + - Implement a Technical PoC in the Digital Product Pass application + +3. **Define how to create Verification Statements in Catena-X** + - Set the first steps for other use cases like PCF Verification which need a Verification Statement to be defined. + - Create a technical solution that can be scaled to other aspect models rather than the Digital Product Pass Use Case + - Talk with different use cases/components in Catena-X to find a common way of using the network to Certify and Verify data. + - Following the CX Standards and ideas like Data Sovereignty, Decentralization and Self Sovereign Identities (SSI) + +Once this objectives are achieved we will be able to scale the solution and implemented in real life so the benefits of the technology and process defined here can contribute to the automotive industry and increase trust in data exchanges using Catena-X. + +## Use Cases -The technology concept consists of creating Signed Documents (Verification Statements) using the Verifiable Credentials 2.0 Technology. Which is in resume a JSON-LD structure standardized by the W3C Consortium for Web 3.0 for data trust and identity assurance. Using JSON Web Signatures (JWS) and a wallet component which is connected to Catena-X and identified by the unique company Business Partner Number (BPN), the data issuer and auditor can sign using their Ed25519 private key and the data consumer can access their public key by resolving the DID contained in the signature proof at the certified document credential. The certified data will be stored in the Data Provider infrastructure sub-model server, in order to assure the data sovereignty. Data consumer can access this data if they are allowed by the data provider simply by looking for the Digital Twin from the specific asset type or instance depending in the specific use case. This data will be retrieved using the EDC connector proxy which is protected by Policies and require data consumers to sign "odrl" contracts to maintain data sovereignty.  +When talking about the certification and verification of data we can find several use cases. Here we have some examples: -In this way decentral data exchange trust is assertive assured. Making possible and easing the transition from the Catena-X network product data exchange from Pre-Production to Production environments. Enabling better decision taking, saving possible human lives, boosting the circular economy use case, creating testification as form of digital proof for possible framework contracts trust breaks or frauds, assuring product quality and increasing employee safety when hazard materials/products are handled. +| Name | Description | +|:----------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Assuring Product Quality** | The final serialized product data manufactured may have flaws/imperfections that can be detected with external type level verified aspects. | +| **Digital Proof of Trust Breaks** | If contractual clauses are broken, having external verified proofs of the actual data provided at a specific time **can be used as legal assets.** This increases the trust of exchanging real production data in Catena-X | +| **Employee Safety Assurance** |When handling/maintaining a product which contains **critical raw materials**, confirming that the materials present on the product can prevent accidents and fatal human loses.| +|**Production Inefficiency Detection** | When assets are not performing as they were “design” for, external verified attributes **can certify inefficiency** of the product performance in use. Leading to future changes in manufacturing and design.| +|**Human Life Handling Products** |Products which handle human lives like Cars, Airplanes and Trains have a strict regulation when it comes to Data Quality requiring the **critical specification data to be “certified/verified** **”** before production for safety reasons | +|**Easing Decision Taking** | When companies need to take important decisions, having external verified attributes/aspect can make a huge difference in which way to go or which product to choose.| +| **Secure Data Against Fraud** | The data providers by verifying and signing digitately their data when issued, are **transparently being protected against fraud or false accusations**, because they can demonstrate the data was verified by an external auditors or their internal quality management. | -This concept has been proofed to be of high interest from the Certification and Verification roles in the Catena-X Community, generating value for multiple use cases and bringing the Catena-X Network Data Exchange Trust Level to a totally new level. Enabling the different network parties to exchange data with electronical proof of an external party certification revision, reducing the risk of failure and error. Allowing data consumers to comfortably invest and deposit their trust in bring their data into a Catena-X Network Production Data Ecosystem Environment. From 07e52c5dc4382c69b3d14b539922f27377af77dc Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Mon, 22 Apr 2024 17:22:08 +0200 Subject: [PATCH 03/24] feat(dpp-verification): added glosarry, references and special thanks --- dpp-verification/README.md | 112 ++++++++++++++++++++++++++++++------- 1 file changed, 92 insertions(+), 20 deletions(-) diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 51ff25163..2446bfb8b 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -29,10 +29,10 @@ SPDX-License-Identifier: Apache-2.0 | Version | v1.0 | -|---------|------| +| ------- | ---- | -| | Date | -|----------------------|-------------------| +| | Date | +| -------------------- | ----------------- | | **Created** | December 29, 2023 | | **Lastest Revision** | April 22, 2024 | @@ -45,8 +45,8 @@ SPDX-License-Identifier: Apache-2.0 ## Authors -| Name | GitHub | Role | -|-----------------------|--------------------------------------------|-----------------------------------------| +| Name | GitHub | Role | +| --------------------- | ------------------------------------------ | --------------------------------------- | | Mathias Brunkow Moser | [@matbmoser](https://github.com/matbmoser) | Digital Product Pass Software Architect | | | | | | | | | @@ -76,6 +76,9 @@ This concept has been proved to be of high interest from the Certification and V - [Value Proposition Motivators](#value-proposition-motivators) - [Objectives](#objectives) - [Use Cases](#use-cases) +- [References](#references) +- [Special Thanks](#special-thanks) +- [Glossary](#glossary) @@ -87,11 +90,11 @@ This Documentation contains the first concept of Data Verification in Catena-X. When talking about certification and verification of data there are a series of motivators that create value for data exchanges done in a production environment. -| | Motivator | Description | -|---|-----------------------|-------------------------------------------------------------------------------------------------------------------------| -| 1 | Trustworthiness | Important for **Accurate Decision Taking** and **Money Loss Avoidance** | -| 2 | Quality Assurance | Proof the quality of the products and be able to **audit product quality standards** | -| 3 | Regulatory Compliance | For regulatory reasons in some specific products a **rigorous verification process is mandatory to protect consumers.** | +| | Motivator | Description | +| --- | --------------------- | ----------------------------------------------------------------------------------------------------------------------- | +| 1 | Trustworthiness | Important for **Accurate Decision Taking** and **Money Loss Avoidance** | +| 2 | Quality Assurance | Proof the quality of the products and be able to **audit product quality standards** | +| 3 | Regulatory Compliance | For regulatory reasons in some specific products a **rigorous verification process is mandatory to protect consumers.** | ## Objectives @@ -124,13 +127,82 @@ Once this objectives are achieved we will be able to scale the solution and impl When talking about the certification and verification of data we can find several use cases. Here we have some examples: -| Name | Description | -|:----------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Assuring Product Quality** | The final serialized product data manufactured may have flaws/imperfections that can be detected with external type level verified aspects. | -| **Digital Proof of Trust Breaks** | If contractual clauses are broken, having external verified proofs of the actual data provided at a specific time **can be used as legal assets.** This increases the trust of exchanging real production data in Catena-X | -| **Employee Safety Assurance** |When handling/maintaining a product which contains **critical raw materials**, confirming that the materials present on the product can prevent accidents and fatal human loses.| -|**Production Inefficiency Detection** | When assets are not performing as they were “design” for, external verified attributes **can certify inefficiency** of the product performance in use. Leading to future changes in manufacturing and design.| -|**Human Life Handling Products** |Products which handle human lives like Cars, Airplanes and Trains have a strict regulation when it comes to Data Quality requiring the **critical specification data to be “certified/verified** **”** before production for safety reasons | -|**Easing Decision Taking** | When companies need to take important decisions, having external verified attributes/aspect can make a huge difference in which way to go or which product to choose.| -| **Secure Data Against Fraud** | The data providers by verifying and signing digitately their data when issued, are **transparently being protected against fraud or false accusations**, because they can demonstrate the data was verified by an external auditors or their internal quality management. | - +| Name | Description | +| :------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **Assuring Product Quality** | The final serialized product data manufactured may have flaws/imperfections that can be detected with external type level verified aspects. | +| **Digital Proof of Trust Breaks** | If contractual clauses are broken, having external verified proofs of the actual data provided at a specific time **can be used as legal assets.** This increases the trust of exchanging real production data in Catena-X | +| **Employee Safety Assurance** | When handling/maintaining a product which contains **critical raw materials**, confirming that the materials present on the product can prevent accidents and fatal human loses. | +| **Production Inefficiency Detection** | When assets are not performing as they were “design” for, external verified attributes **can certify inefficiency** of the product performance in use. Leading to future changes in manufacturing and design. | +| **Human Life Handling Products** | Products which handle human lives like Cars, Airplanes and Trains have a strict regulation when it comes to Data Quality requiring the **critical specification data to be “certified/verified** **”** before production for safety reasons | +| **Easing Decision Taking** | When companies need to take important decisions, having external verified attributes/aspect can make a huge difference in which way to go or which product to choose. | +| **Secure Data Against Fraud** | The data providers by verifying and signing digitately their data when issued, are **transparently being protected against fraud or false accusations**, because they can demonstrate the data was verified by an external auditors or their internal quality management. | + + +# References + +The following references were used as inspiration for understanding more how product credentials are done in the market. Is also included references to components in Tractus-X that were used to undertand on how the different components behave in the network. + +No content with copyright was copied. All the information used as reference in this documentation is open source, is available for the public or released under creative commons license. + +| Name | Author | Date | Link | +|:---------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Data Integrity Demonstrator (TRS) in Supply Chain | [Matthias Binzer](https://github.com/matgnt) - Bosch | 2023 | | +| ID Union Data Integrity Demonstrator | [Matthias Binzer](https://github.com/matgnt) - Bosch | 2023 | https://github.com/IDunion/i40-examples/tree/main/nameplate-vc | +| Digital Product Passport Verifiable Credential Demo | Spherity | 2023 | https://acme.dpp.spherity.com/ | +| Verifiable Credentials Data Model v1.1/v2.0 | W3C | 2022 - 2024 | https://www.w3.org/TR/vc-data-model/ https://www.w3.org/TR/vc-data-model-2.0/ | +| Tractus-X SSI Documentation | Catena-X Core-ART Architects & Eclipse Tractus-X Contributors | 2023 | https://github.com/eclipse-tractusx/ssi-docu/tree/main/docs/architecture/cx-3-2 | +| Ed25519: high-speed high-security signatures | Daniel J. Bernstein, University of Illinois at Chicago Niels Duif, Technische Universiteit Eindhoven Tanja Lange, TechnischeUniversiteit Eindhoven Peter Schwabe,National Taiwan UniversityBo-Yin Yang,Academia Sinica | 2017 | https://ed25519.cr.yp.to/ | +| Digital Product Pass Documentation and Arc42 | [Mathias Brunkow Moser](https://github.com/matbmoser) & [Muhammad Saud Khan](https://github.com/saudkhan116) - CGI - Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/digital-product-pass/ https://github.com/eclipse-tractusx/digital-product-pass/blob/main/docs/arc42/Arc42.md | +| Managed Identity Wallets | [Dominik Pinsel](https://github.com/DominikPinsel) & [Boris Rizov](https://github.com/borisrizov-zf) - Tractus-X Contributors | 2022-2024 | https://github.com/eclipse-tractusx/managed-identity-wallet | +| Digital Twin Registry | [Tunahan Cicek](https://github.com/tunacicek) - Bosch | 2021-2024 | https://github.com/eclipse-tractusx/sldt-digital-twin-registry | +| Tractus-X EDC | [Paul Latzelsperger](https://github.com/paullatzelsperger) - Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/tractusx-edc | +| Eclipse Connector | Eclipse Foundation Contributors | 2021-2024 | https://github.com/eclipse-edc/Connector | +| Universal Resolver for DIDs | Universal Resolver | 2017-2024 | https://dev.uniresolver.io/ https://github.com/decentralized-identity/universal-resolver | +| Decentralized Identifiers (DIDs) v1.0 | W3C | 2022 | https://www.w3.org/TR/did-core/ | +| Decentralized Identifier Resolution (DID Resolution) v0.3 | W3C | 2023 | https://w3c-ccg.github.io/did-resolution/ | +| Self-Sovereign Identity - Decentralized Digital Identity and Verifiable Credentials v2 | Manning Publications: manning.com | 2020 | https://livebook.manning.com/book/self-sovereign-identity/chapter-8/v-2/7 | +| EECC Verifier for Verifiable Credentials | Free Software Foundation, Inc (https://fsf.org) | 2022-2024 | https://github.com/european-epc-competence-center/vc-verifier [ssi.eecc.de/verifier](ssi.eecc.de/verifier/) | +| Identity Resolution Verification | European EPC Competence Center GmbHhttps://eecc.info/ | 2022-2024 | https://id.eecc.de/ | +| SuplyTree - The Inter-company Tamper-evidence Protocol for Supply Chain Traceability | Matthias Guenther, Robert Bosch GmbH, Economy of Things Dominie Woerner, Robert Bosch Switzerland, Economy of Things | 2023 | | +| A Beginners Guide to Decentralized Identifiers (DIDs) | Amarachi Johnson-Ubah - Medium | 2022 | https://medium.com/veramo/a-beginners-guide-to-decentralized-identifiers-dids-5e842398e82c#:~:text=A%20decentralized%20identifier%20is%20an,the%20signatures%20of%20that%20subject | +| Schema Organization for JSON-LD | W3C | 2021-2024 | https://schema.org/ | + + +# Special Thanks +We would like to thank [Matthias Binzer](https://github.com/matgnt) for contributing in the refactoring of the initial concept by giving some insights on how he has done the Supply Chain data integrity concept using Verifiable Credentials (TRS) Data Integrity Demonstrator. He supported us on finding a way and giving the hints for maintaining sensitive disclosure when it comes to verify specific attributes from a aspect. +We also thank for all the Platform Capability Architects for their disposition for reviewing and supporting the concept from an architecture perspective. We thank the Wallet Catena-X Experts for the time they took review the concept and for the feedback that was given. +We thank the managed identify wallets product owner for the support and availability for answering questions which were relevant to the adaptation of the concept to the architecture. +Last but not least a special thanks for all the Tractus-X and Catena-X Stakeholders that participated in the elaboration and review of this concept. + + +# Glossary + +Here are the abbreviations and complete terms used during the +explanation of this Certification and Verification Concept. + +| **Abbreviation** | **Complete Term** | +| --------------------- | ---------------------------------------------------------- | +| AAS | Asset Administration Shell | +| API | Application Programming Interfaces | +| BPN(BPNL, BPNA, BPNS) | Business Partner Number (Legal Entities, Addresses, Sites) | +| CSC | Certified Snapshot Credential | +| CDC | Certified Data Credential | +| DTR | Digital Twin Registry | +| dDTR | Decentralized Digital Twin Registry | +| DID | Decentral Identifier | +| DPP | Digital Product Passport | +| DT | Digital Twin | +| EDC | Eclipse Data Space Connector | +| IRS | Item Relationship Service | +| JSON | JavaScript Object Notation | +| JWT | JSON Web Token | +| JWS | JSON Web Signature | +| JSON-LD | JavaScript Object Notation for Linked Data | +| MIW | Managed Identity Wallet | +| PCF | Product Carbon Footprint | +| SSI | Self-Sovereign Identity | +| TRG | Tractus-X Release Guideline | +| TTL | Terse RDF Triple Language | +| VC | Verifiable Credential | +| VP | Verifiable Presentation | +| W3C | World Wide Web Consortium | \ No newline at end of file From 50fd270e3ec7b421c10084ca5e31455683d170dc Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Tue, 23 Apr 2024 09:11:16 +0200 Subject: [PATCH 04/24] chore(dpp-verification): added verification concept license and attribution --- dpp-verification/CC-BY-4.0 | 395 +++++++++++++++++++++++++++++++++++++ dpp-verification/README.md | 20 +- 2 files changed, 411 insertions(+), 4 deletions(-) create mode 100644 dpp-verification/CC-BY-4.0 diff --git a/dpp-verification/CC-BY-4.0 b/dpp-verification/CC-BY-4.0 new file mode 100644 index 000000000..102013379 --- /dev/null +++ b/dpp-verification/CC-BY-4.0 @@ -0,0 +1,395 @@ +Attribution 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution 4.0 International Public License ("Public License"). To the +extent this Public License may be interpreted as a contract, You are +granted the Licensed Rights in consideration of Your acceptance of +these terms and conditions, and the Licensor grants You such rights in +consideration of benefits the Licensor receives from making the +Licensed Material available under these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. \ No newline at end of file diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 2446bfb8b..63e2383e2 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -153,9 +153,9 @@ No content with copyright was copied. All the information used as reference in t | Tractus-X SSI Documentation | Catena-X Core-ART Architects & Eclipse Tractus-X Contributors | 2023 | https://github.com/eclipse-tractusx/ssi-docu/tree/main/docs/architecture/cx-3-2 | | Ed25519: high-speed high-security signatures | Daniel J. Bernstein, University of Illinois at Chicago Niels Duif, Technische Universiteit Eindhoven Tanja Lange, TechnischeUniversiteit Eindhoven Peter Schwabe,National Taiwan UniversityBo-Yin Yang,Academia Sinica | 2017 | https://ed25519.cr.yp.to/ | | Digital Product Pass Documentation and Arc42 | [Mathias Brunkow Moser](https://github.com/matbmoser) & [Muhammad Saud Khan](https://github.com/saudkhan116) - CGI - Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/digital-product-pass/ https://github.com/eclipse-tractusx/digital-product-pass/blob/main/docs/arc42/Arc42.md | -| Managed Identity Wallets | [Dominik Pinsel](https://github.com/DominikPinsel) & [Boris Rizov](https://github.com/borisrizov-zf) - Tractus-X Contributors | 2022-2024 | https://github.com/eclipse-tractusx/managed-identity-wallet | -| Digital Twin Registry | [Tunahan Cicek](https://github.com/tunacicek) - Bosch | 2021-2024 | https://github.com/eclipse-tractusx/sldt-digital-twin-registry | -| Tractus-X EDC | [Paul Latzelsperger](https://github.com/paullatzelsperger) - Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/tractusx-edc | +| Managed Identity Wallets | Tractus-X Contributors | 2022-2024 | https://github.com/eclipse-tractusx/managed-identity-wallet | +| Digital Twin Registry | Bosch - Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/sldt-digital-twin-registry | +| Tractus-X EDC | Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/tractusx-edc | | Eclipse Connector | Eclipse Foundation Contributors | 2021-2024 | https://github.com/eclipse-edc/Connector | | Universal Resolver for DIDs | Universal Resolver | 2017-2024 | https://dev.uniresolver.io/ https://github.com/decentralized-identity/universal-resolver | | Decentralized Identifiers (DIDs) v1.0 | W3C | 2022 | https://www.w3.org/TR/did-core/ | @@ -205,4 +205,16 @@ explanation of this Certification and Verification Concept. | TTL | Terse RDF Triple Language | | VC | Verifiable Credential | | VP | Verifiable Presentation | -| W3C | World Wide Web Consortium | \ No newline at end of file +| W3C | World Wide Web Consortium | + + +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). +See the [License](./CC-BY-4.0) for more information about usage of content and author attribution. + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass \ No newline at end of file From 17439d8f77b24618a14f6ec6a75f04b67c1f4b59 Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Tue, 23 Apr 2024 15:36:25 +0200 Subject: [PATCH 05/24] feat(dpp-verification): added the attribute certification and total certification processes --- .gitattributes | 1 + dpp-verification/README.md | 34 +++++++++++++++++++-- dpp-verification/resources/cdc-workflow.svg | 4 +++ dpp-verification/resources/csc-workflow.svg | 4 +++ 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 .gitattributes create mode 100644 dpp-verification/resources/cdc-workflow.svg create mode 100644 dpp-verification/resources/csc-workflow.svg diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..94f480de9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf \ No newline at end of file diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 63e2383e2..087209a75 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -63,7 +63,7 @@ Product Information Certification is the way to go when it comes to creating tru This Digital Product Pass Verification and Certification concept aims to create an assertive second layer of trust over the actual peer to peer data exchanges of Product Information. Basing itself in the SSI technology already in place in Catena-X, this concept sets the first steps for data verification statements creation starting with the CX Generic Digital Product Pass Aspect Model. Giving the data providers the possibility of creating self signed documents confirming the information placed into the aspect models and gives data auditors the possibility to certify one or more specific attributes from Aspect Model documents that are relevant to the data provider business cases. It allows the data consumer to base its processes and decisions based on actual production data which has been assertive verified by external auditors, giving safety that not just the data issuer by also a third party has certified that specific data is true or compliant to standards. -The technology concept consists of creating Signed Documents (Verification Statements) using the Verifiable Credentials 2.0 Technology. Which is in resume a JSON-LD structure standardized by the W3C Consortium for Web 3.0 for data trust and identity assurance. Using JSON Web Signatures (JWS) and a wallet component which is connected to Catena-X and identified by the unique company Business Partner Number (BPN), the data issuer and auditor can sign using their Ed25519 private key and the data consumer can access their public key by resolving the DID contained in the signature proof at the certified document credential. The certified data will be stored in the Data Provider infrastructure sub-model server, in order to assure the data sovereignty. Data consumer can access this data if they are allowed by the data provider simply by looking for the Digital Twin from the specific asset type or instance depending on the specific use case. This data will be retrieved using the EDC connector proxy which is protected by Policies and require data consumers to sign "odrl" contracts to maintain data sovereignty. +>The technology concept consists of creating Signed Documents (Verification Statements) using the Verifiable Credentials 2.0 Technology. Which is in resume a JSON-LD structure standardized by the W3C Consortium for Web 3.0 for data trust and identity assurance. Using JSON Web Signatures (JWS) and a wallet component which is connected to Catena-X and identified by the unique company Business Partner Number (BPN), the data issuer and auditor can sign using their Ed25519 private key and the data consumer can access their public key by resolving the DID contained in the signature proof at the certified document credential. The certified data will be stored in the Data Provider infrastructure sub-model server, in order to assure the data sovereignty. Data consumer can access this data if they are allowed by the data provider simply by looking for the Digital Twin from the specific asset type or instance depending on the specific use case. This data will be retrieved using the EDC connector proxy which is protected by Policies and require data consumers to sign "odrl" contracts to maintain data sovereignty. In this way decentralize data exchange trust is assertive assured. Making possible and easing the transition from the Catena-X network product data exchange from Pre-Production to Production environments. Enabling better decision taking, saving possible human lives, boosting the circular economy use case, creating justification as form of digital proof for possible framework contracts trust breaks or frauds, assuring product quality and increasing employee safety when hazard materials/products are handled. @@ -84,7 +84,7 @@ This concept has been proved to be of high interest from the Certification and V # Introduction -This Documentation contains the first concept of Data Verification in Catena-X. This verification aims to create a second layer of trust over the EDC data exchanges between consumers and data providers. Allowing auditors to verify specific attributes or complete aspect models for data providers and allowing consumers to retrieve and verify the "validity" of the verification done.  +This Documentation contains the first concept of Data Verification in Catena-X. This verification aims to create a second layer of trust over the EDC data exchanges between consumers and data providers. Allowing auditors to verify specific attributes or complete aspect models for data providers and allowing consumers to retrieve and verify the "validity" of the verification done. ## Value Proposition Motivators @@ -138,6 +138,36 @@ When talking about the certification and verification of data we can find severa | **Secure Data Against Fraud** | The data providers by verifying and signing digitately their data when issued, are **transparently being protected against fraud or false accusations**, because they can demonstrate the data was verified by an external auditors or their internal quality management. | +# Certification Processes + +For easing the understanding from the certification process and the interaction between the Data Provider and the Data Auditor, some diagrams are provided where the different interactions and artifacts generated are mapped. + +> [!NOTE] +> +> The Certification Processes of data are valid equally for TYPE level digital twins (Aspect Model in Type Level) or Instance digital twins (Aspect Model in Serialized Level). The difference relies in the configuration of the digital twin, and in which level the certification wants to be done. +> Is important to know that the certification **MUST** be at the same level always. If we talk about a Digital Twin in Type Level, then the Digital Product Pass or any aspect model will contain Type level data, as well as the verified attributes. + +## Attribute Certification Process +The attribute certification is based on a plain JSON Aspect Model Payload that contains the information from a digital product pass. It starts with the `data provider` that creates the `digital product passport` with the available information from and storing it in the `data service`. +Once that is done the data will be linked in a `digital twin`, so in this way by receiving the digital twin and searching for the passport submodel it can be found. After that it will be stored in the `digital twin registry`. Now if any attribute level certification is required to be done by an auditor, a `request` will be triggered from the data provider side, so a `EDC Push Notification` will be sent to the `data auditor` with the EDC Provider URL, the Digital Twin Id and the DPP Aspect Submodel Id (unique identification) + +> [!TIP] +> +> A possible optimization to be done is to send directly the digital product pass data and the path to the attributes to be verified. However for maintaining data sovereignty and the data not being transmitted without a contact exchange, the best way would be to send the IDs and then the `data auditor` will retrieve the data using the EDC. + +Once the EDC Push Notification is received by the `data auditor` the Digital Twin and the Digital Product Pass (JSON aspect model payload to be audited) will be retrieved using the `EDC Connector` and through the `EDC Data Plane proxy`. When the passport aspect is available the data auditor can certify the `specific attributes requested` from the product against the different catena-x standards and regulations. The `data auditor` will create a new document (a certified snapshot credential) which contains the proof of compliance of the specific attributes audited in the passport using selective disclosure, there the data is not copied it is hashed so it can be signed and stored in the wallet from the `data auditor` for tracking reasons. + +The `CSC Document` (the certificate) will then be sent to the `data provider` using the EDC Push Notification functionality. When the data arrives in the data provider it will be then added to the `Attribute Certification Record (ACR)` which contains all the attribute certifications for an specific aspect model payload submodel. It contains a list of credentials provided by one or more auditors for this aspect. It will be linked in the digital twin where the aspect is and if additional certification is required it will be triggered and the process repeats again. + +![](./resources/csc-workflow.svg) + +## Total Certification Process + +The total certification process is the same as the attribute verification process however the complete process is not starting with a plain json file. In this case the data provider can `self testify` its own data. The rest of the process is same and will result in the verification from the specific attributes from the aspect. + +![](./resources/cdc-workflow.svg) + + # References The following references were used as inspiration for understanding more how product credentials are done in the market. Is also included references to components in Tractus-X that were used to undertand on how the different components behave in the network. diff --git a/dpp-verification/resources/cdc-workflow.svg b/dpp-verification/resources/cdc-workflow.svg new file mode 100644 index 000000000..5cb71384e --- /dev/null +++ b/dpp-verification/resources/cdc-workflow.svg @@ -0,0 +1,4 @@ + + + +
Total Certification Process
Data Provider
Create Digital Product Passport
Link DPP in 
Digital Twin
No
Additional
Certification
Required?
Store in 
Data Service
Yes
Request Auditor for
Attribute Certification
Receive CSC Credential
Add CSC in
Attribute Certification Record (ACR)
ACR
CSC
Store ACR in Data Service
Link to the Original Digital Twin
CSC
CSC
DPP
CDC
DT
Store in 
Digital Twin Registry
START
END
Create Certified Data Credential
Sign CDC Credential in the Wallet
Catena-X
EDC 
Push Notification
with EDC Url + DT ID
+ DPP Aspect ID +
List of Attributes Paths
to Certify
Data Auditor
Receive Request for 
Attribute Certification
Request the
Digital Twin
Request Digital Product Pass
Verify Attributes
in DPP Application
Create Certified Snapshot Credential
(CSC)
Sign CSC Credential in the Wallet
CSC
Send Data Provider the Signed Credential
EDC 
Push Notification
POST sending CSC in Body
Verifiable using DID
in Signature Proof
Get Digital Product Pass
from Data Service with
EDC
Get Digital Twin
from Digital Twin Registry
with EDC
\ No newline at end of file diff --git a/dpp-verification/resources/csc-workflow.svg b/dpp-verification/resources/csc-workflow.svg new file mode 100644 index 000000000..407945a1b --- /dev/null +++ b/dpp-verification/resources/csc-workflow.svg @@ -0,0 +1,4 @@ + + + +
Attribute Certification Process
Data Provider
Create Digital Product Passport
Link DPP in 
Digital Twin
No
Additional
Certification
Required?
Store in 
Data Service
Yes
Request Auditor for
Attribute Certification
Receive CSC Credential
Add CSC in
Attribute Certification Record (ACR)
ACR
CSC
Store ACR in Data Service
Link to the Original Digital Twin
CSC
CSC
DPP
DT
Store in 
Digital Twin Registry
START
END
Catena-X
EDC 
Push Notification
with EDC Url + DT ID
+ DPP Aspect ID +
List of Attributes Paths
to Certify
Data Auditor
Receive Request for 
Attribute Certification
Request the
Digital Twin
Request Digital Product Pass
Verify Attributes
in DPP Application
Create Certified Snapshot Credential
(CSC)
Sign CSC Credential in the Wallet
CSC
Send Data Provider the Signed Credential
EDC 
Push Notification
POST sending CSC in Body
Verifiable using DID
in Signature Proof
Get Digital Product Pass
from Data Service with
EDC
Get Digital Twin
from Digital Twin Registry
with EDC
\ No newline at end of file From 521647c8aa8083083b725bb30b674bd2b9debed1 Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Tue, 23 Apr 2024 15:49:43 +0200 Subject: [PATCH 06/24] feat(dpp-verification): added self-testify certification workflow --- dpp-verification/README.md | 28 +++++++++++++------ .../cdc-csc-workflow.svg} | 0 .../resources/processes/cdc-workflow.svg | 4 +++ .../{ => processes}/csc-workflow.svg | 0 4 files changed, 24 insertions(+), 8 deletions(-) rename dpp-verification/resources/{cdc-workflow.svg => processes/cdc-csc-workflow.svg} (100%) create mode 100644 dpp-verification/resources/processes/cdc-workflow.svg rename dpp-verification/resources/{ => processes}/csc-workflow.svg (100%) diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 087209a75..652c71d65 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -63,7 +63,7 @@ Product Information Certification is the way to go when it comes to creating tru This Digital Product Pass Verification and Certification concept aims to create an assertive second layer of trust over the actual peer to peer data exchanges of Product Information. Basing itself in the SSI technology already in place in Catena-X, this concept sets the first steps for data verification statements creation starting with the CX Generic Digital Product Pass Aspect Model. Giving the data providers the possibility of creating self signed documents confirming the information placed into the aspect models and gives data auditors the possibility to certify one or more specific attributes from Aspect Model documents that are relevant to the data provider business cases. It allows the data consumer to base its processes and decisions based on actual production data which has been assertive verified by external auditors, giving safety that not just the data issuer by also a third party has certified that specific data is true or compliant to standards. ->The technology concept consists of creating Signed Documents (Verification Statements) using the Verifiable Credentials 2.0 Technology. Which is in resume a JSON-LD structure standardized by the W3C Consortium for Web 3.0 for data trust and identity assurance. Using JSON Web Signatures (JWS) and a wallet component which is connected to Catena-X and identified by the unique company Business Partner Number (BPN), the data issuer and auditor can sign using their Ed25519 private key and the data consumer can access their public key by resolving the DID contained in the signature proof at the certified document credential. The certified data will be stored in the Data Provider infrastructure sub-model server, in order to assure the data sovereignty. Data consumer can access this data if they are allowed by the data provider simply by looking for the Digital Twin from the specific asset type or instance depending on the specific use case. This data will be retrieved using the EDC connector proxy which is protected by Policies and require data consumers to sign "odrl" contracts to maintain data sovereignty. +> The technology concept consists of creating Signed Documents (Verification Statements) using the Verifiable Credentials 2.0 Technology. Which is in resume a JSON-LD structure standardized by the W3C Consortium for Web 3.0 for data trust and identity assurance. Using JSON Web Signatures (JWS) and a wallet component which is connected to Catena-X and identified by the unique company Business Partner Number (BPN), the data issuer and auditor can sign using their Ed25519 private key and the data consumer can access their public key by resolving the DID contained in the signature proof at the certified document credential. The certified data will be stored in the Data Provider infrastructure sub-model server, in order to assure the data sovereignty. Data consumer can access this data if they are allowed by the data provider simply by looking for the Digital Twin from the specific asset type or instance depending on the specific use case. This data will be retrieved using the EDC connector proxy which is protected by Policies and require data consumers to sign "odrl" contracts to maintain data sovereignty. In this way decentralize data exchange trust is assertive assured. Making possible and easing the transition from the Catena-X network product data exchange from Pre-Production to Production environments. Enabling better decision taking, saving possible human lives, boosting the circular economy use case, creating justification as form of digital proof for possible framework contracts trust breaks or frauds, assuring product quality and increasing employee safety when hazard materials/products are handled. @@ -144,39 +144,51 @@ For easing the understanding from the certification process and the interaction > [!NOTE] > -> The Certification Processes of data are valid equally for TYPE level digital twins (Aspect Model in Type Level) or Instance digital twins (Aspect Model in Serialized Level). The difference relies in the configuration of the digital twin, and in which level the certification wants to be done. +> The Certification Processes of data are valid equally for `Type` level digital twins (Aspect Model in Type Level) or `Instance` digital twins (Aspect Model in Serialized Level). The difference relies on the configuration of the digital twin, and in which level the certification wants to be done. > Is important to know that the certification **MUST** be at the same level always. If we talk about a Digital Twin in Type Level, then the Digital Product Pass or any aspect model will contain Type level data, as well as the verified attributes. +## Certification Types + + + + ## Attribute Certification Process The attribute certification is based on a plain JSON Aspect Model Payload that contains the information from a digital product pass. It starts with the `data provider` that creates the `digital product passport` with the available information from and storing it in the `data service`. Once that is done the data will be linked in a `digital twin`, so in this way by receiving the digital twin and searching for the passport submodel it can be found. After that it will be stored in the `digital twin registry`. Now if any attribute level certification is required to be done by an auditor, a `request` will be triggered from the data provider side, so a `EDC Push Notification` will be sent to the `data auditor` with the EDC Provider URL, the Digital Twin Id and the DPP Aspect Submodel Id (unique identification) > [!TIP] > -> A possible optimization to be done is to send directly the digital product pass data and the path to the attributes to be verified. However for maintaining data sovereignty and the data not being transmitted without a contact exchange, the best way would be to send the IDs and then the `data auditor` will retrieve the data using the EDC. +> A possible optimization to be done is to send directly the digital product pass data and the path to the attributes to be verified. However, for maintaining data sovereignty and the data not being transmitted without a contact exchange, the best way would be to send the IDs and then the `data auditor` will retrieve the data using the EDC. Once the EDC Push Notification is received by the `data auditor` the Digital Twin and the Digital Product Pass (JSON aspect model payload to be audited) will be retrieved using the `EDC Connector` and through the `EDC Data Plane proxy`. When the passport aspect is available the data auditor can certify the `specific attributes requested` from the product against the different catena-x standards and regulations. The `data auditor` will create a new document (a certified snapshot credential) which contains the proof of compliance of the specific attributes audited in the passport using selective disclosure, there the data is not copied it is hashed so it can be signed and stored in the wallet from the `data auditor` for tracking reasons. The `CSC Document` (the certificate) will then be sent to the `data provider` using the EDC Push Notification functionality. When the data arrives in the data provider it will be then added to the `Attribute Certification Record (ACR)` which contains all the attribute certifications for an specific aspect model payload submodel. It contains a list of credentials provided by one or more auditors for this aspect. It will be linked in the digital twin where the aspect is and if additional certification is required it will be triggered and the process repeats again. -![](./resources/csc-workflow.svg) +![](./resources/processes/csc-workflow.svg) + +## Self-Testify Certification Process + +The self-testify certification process consist in the data provided singing its own data which is being provided. Basically giving proof that he was the one that aggregated and created this data. + +![](./resources/processes/cdc-workflow.svg) + ## Total Certification Process The total certification process is the same as the attribute verification process however the complete process is not starting with a plain json file. In this case the data provider can `self testify` its own data. The rest of the process is same and will result in the verification from the specific attributes from the aspect. -![](./resources/cdc-workflow.svg) +![](./resources/processes/cdc-csc-workflow.svg) # References -The following references were used as inspiration for understanding more how product credentials are done in the market. Is also included references to components in Tractus-X that were used to undertand on how the different components behave in the network. +The following references were used as inspiration for understanding more how product credentials are done in the market. Is also included references to components in Tractus-X that were used to understand on how the different components behave in the network. No content with copyright was copied. All the information used as reference in this documentation is open source, is available for the public or released under creative commons license. | Name | Author | Date | Link | |:---------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Data Integrity Demonstrator (TRS) in Supply Chain | [Matthias Binzer](https://github.com/matgnt) - Bosch | 2023 | | +| Data Integrity Demonstrator (TRS) in Supply Chain | [Matthias Binzer](https://github.com/matgnt) - Bosch | 2023 | https://github.com/boschresearch/cx-data-integrity-demonstrator | | ID Union Data Integrity Demonstrator | [Matthias Binzer](https://github.com/matgnt) - Bosch | 2023 | https://github.com/IDunion/i40-examples/tree/main/nameplate-vc | | Digital Product Passport Verifiable Credential Demo | Spherity | 2023 | https://acme.dpp.spherity.com/ | | Verifiable Credentials Data Model v1.1/v2.0 | W3C | 2022 - 2024 | https://www.w3.org/TR/vc-data-model/ https://www.w3.org/TR/vc-data-model-2.0/ | @@ -199,7 +211,7 @@ No content with copyright was copied. All the information used as reference in t # Special Thanks -We would like to thank [Matthias Binzer](https://github.com/matgnt) for contributing in the refactoring of the initial concept by giving some insights on how he has done the Supply Chain data integrity concept using Verifiable Credentials (TRS) Data Integrity Demonstrator. He supported us on finding a way and giving the hints for maintaining sensitive disclosure when it comes to verify specific attributes from a aspect. +We would like to thank [Matthias Binzer](https://github.com/matgnt) for contributing in the refactoring of the initial concept by giving some insights on how he has done the Supply Chain data integrity concept using Verifiable Credentials (TRS) Data Integrity Demonstrator. He supported us on finding a way and giving the hints for maintaining selective disclosure when it comes to verify specific attributes from a aspect. We also thank for all the Platform Capability Architects for their disposition for reviewing and supporting the concept from an architecture perspective. We thank the Wallet Catena-X Experts for the time they took review the concept and for the feedback that was given. We thank the managed identify wallets product owner for the support and availability for answering questions which were relevant to the adaptation of the concept to the architecture. Last but not least a special thanks for all the Tractus-X and Catena-X Stakeholders that participated in the elaboration and review of this concept. diff --git a/dpp-verification/resources/cdc-workflow.svg b/dpp-verification/resources/processes/cdc-csc-workflow.svg similarity index 100% rename from dpp-verification/resources/cdc-workflow.svg rename to dpp-verification/resources/processes/cdc-csc-workflow.svg diff --git a/dpp-verification/resources/processes/cdc-workflow.svg b/dpp-verification/resources/processes/cdc-workflow.svg new file mode 100644 index 000000000..3514c1a05 --- /dev/null +++ b/dpp-verification/resources/processes/cdc-workflow.svg @@ -0,0 +1,4 @@ + + + +
Self-Testify Certification Process
Data Provider
Create Digital Product Passport
Link DPP in 
Digital Twin
Store in 
Data Service
DPP
CDC
DT
Store in 
Digital Twin Registry
START
END
Create Certified Data Credential
Sign CDC Credential in the Wallet
\ No newline at end of file diff --git a/dpp-verification/resources/csc-workflow.svg b/dpp-verification/resources/processes/csc-workflow.svg similarity index 100% rename from dpp-verification/resources/csc-workflow.svg rename to dpp-verification/resources/processes/csc-workflow.svg From 83ec8a5858e8be77a6aea7c53476f6ad61c2a952 Mon Sep 17 00:00:00 2001 From: Mathias Moser <71728767+matbmoser@users.noreply.github.com> Date: Tue, 23 Apr 2024 18:07:52 +0200 Subject: [PATCH 07/24] chore(dpp-verification): added documentation status --- dpp-verification/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 652c71d65..0df300363 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -28,14 +28,19 @@ SPDX-License-Identifier: Apache-2.0

Digital Product Pass Verification Add-on

+[![Contributors]https://img.shields.io/badge/Status-In%20Progress-8A2BE2?style=for-the-badge] + + | Version | v1.0 | | ------- | ---- | | | Date | | -------------------- | ----------------- | | **Created** | December 29, 2023 | -| **Lastest Revision** | April 22, 2024 | +| **Lastest Revision** | April 23, 2024 | +> [!CAUTION] +> This documentation is still in progress... Not all the content is yet available. It is being migrated and published here whenever it is ready. It will be finished and added to main in the R24.05 ## Tags From 11c30a6fa31b3f544c6997b6e02587ae7dcaf8c6 Mon Sep 17 00:00:00 2001 From: Mathias Moser <71728767+matbmoser@users.noreply.github.com> Date: Tue, 23 Apr 2024 18:09:08 +0200 Subject: [PATCH 08/24] chore(dpp-verification): added status badge --- dpp-verification/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 0df300363..c9d4e50e6 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -28,7 +28,7 @@ SPDX-License-Identifier: Apache-2.0

Digital Product Pass Verification Add-on

-[![Contributors]https://img.shields.io/badge/Status-In%20Progress-8A2BE2?style=for-the-badge] +![https://img.shields.io/badge/Status-In%20Progress-8A2BE2?style=for-the-badge] | Version | v1.0 | @@ -264,4 +264,4 @@ See the [License](./CC-BY-4.0) for more information about usage of content and a - SPDX-FileCopyrightText: 2023, 2024 BMW AG - SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG - SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation -- Source URL: https://github.com/eclipse-tractusx/digital-product-pass \ No newline at end of file +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass From b49719282b017fc45a9e3ebe46d096ad58238ea9 Mon Sep 17 00:00:00 2001 From: Mathias Moser <71728767+matbmoser@users.noreply.github.com> Date: Tue, 23 Apr 2024 18:16:40 +0200 Subject: [PATCH 09/24] chore(dpp-verification): added metadata and better info badges --- dpp-verification/README.md | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/dpp-verification/README.md b/dpp-verification/README.md index c9d4e50e6..4911160ef 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -25,38 +25,40 @@ SPDX-License-Identifier: Apache-2.0
DPP Verificaion Logo +

+ Version:  v1.0 + STATUS: IN PROGRESS

Digital Product Pass Verification Add-on

-![https://img.shields.io/badge/Status-In%20Progress-8A2BE2?style=for-the-badge] - - -| Version | v1.0 | -| ------- | ---- | - -| | Date | -| -------------------- | ----------------- | -| **Created** | December 29, 2023 | -| **Lastest Revision** | April 23, 2024 | - > [!CAUTION] > This documentation is still in progress... Not all the content is yet available. It is being migrated and published here whenever it is ready. It will be finished and added to main in the R24.05 -## Tags +# Metadata -> [!NOTE] -> #Cybersecurity #DataVerification #DataCertification #Catena-X #DigitalProductPassVerification #DPP #SignedDocuments #DataCredentials -> #DigitalProductPass #VerifiableCredentials #Wallets #DecentralIdenties #SSI #ProductDataExchangeTrust #Verification #Innovation #Ed25519 #JWS #Web3.0 +| | Date | Authors & Reviewers | +| -------------------- | ----------------- | ----------------------------------------------------- | +| **Created** | December 29, 2023 | [Mathias Brunkow Moser](https://github.com/matbmoser) | +| **Lastest Revision** | April 23, 2024 | [Mathias Brunkow Moser](https://github.com/matbmoser) | ## Authors + | Name | GitHub | Role | | --------------------- | ------------------------------------------ | --------------------------------------- | | Mathias Brunkow Moser | [@matbmoser](https://github.com/matbmoser) | Digital Product Pass Software Architect | | | | | | | | | -## Abstract +## Tags + +> [!NOTE] +> #Cybersecurity #DataVerification #DataCertification #Catena-X #DigitalProductPassVerification #DPP #SignedDocuments #DataCredentials +> #DigitalProductPass #VerifiableCredentials #Wallets #DecentralIdenties #SSI #ProductDataExchangeTrust #Verification #Innovation #Ed25519 #JWS #Web3.0 + + + +# Abstract When talking about increasing trust in data ecosystems there are multiple possible ways to be followed. Contractual and Policy solutions can be taken into consideration to ensure data sovereignty based on analog framework agreement contracts. Blockchain solutions can be implemented to assure that transactions and ownership is mathematically proofed, creating a assertive level of trust in the complete chain. Artificial Intelligence can be used as a neutral party for doing moderation and certification of data of partners and member of the network. However if you want to maintain your data and identify under your control assuring data sovereignty and keeping it decentral the best option to choose are Decentral Identities from the W3C. From 296be3d997ee972ea807a755d3de6e81e6fe7df9 Mon Sep 17 00:00:00 2001 From: Mathias Moser <71728767+matbmoser@users.noreply.github.com> Date: Tue, 23 Apr 2024 18:28:10 +0200 Subject: [PATCH 10/24] chore(dpp-verification): normalized licenses in all the verification documentation --- dpp-verification/README.md | 1 + .../resources/processes/cdc-csc-workflow.svg.license | 11 +++++++++++ .../resources/processes/cdc-workflow.svg.license | 11 +++++++++++ .../resources/processes/csc-workflow.svg.license | 11 +++++++++++ .../resources/verification-logo.png.license | 12 ++++++++++++ 5 files changed, 46 insertions(+) create mode 100644 dpp-verification/resources/processes/cdc-csc-workflow.svg.license create mode 100644 dpp-verification/resources/processes/cdc-workflow.svg.license create mode 100644 dpp-verification/resources/processes/csc-workflow.svg.license create mode 100644 dpp-verification/resources/verification-logo.png.license diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 4911160ef..30e5af6ae 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -261,6 +261,7 @@ explanation of this Certification and Verification Concept. This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). See the [License](./CC-BY-4.0) for more information about usage of content and author attribution. +Author: [Mathias Brunkow Moser](https://github.com/matbmoser) - SPDX-License-Identifier: CC-BY-4.0 - SPDX-FileCopyrightText: 2023, 2024 BMW AG diff --git a/dpp-verification/resources/processes/cdc-csc-workflow.svg.license b/dpp-verification/resources/processes/cdc-csc-workflow.svg.license new file mode 100644 index 000000000..bd477cd75 --- /dev/null +++ b/dpp-verification/resources/processes/cdc-csc-workflow.svg.license @@ -0,0 +1,11 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). +See the [License](./CC-BY-4.0) for more information about usage of content and author attribution. +Author: [Mathias Brunkow Moser](https://github.com/matbmoser) + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass diff --git a/dpp-verification/resources/processes/cdc-workflow.svg.license b/dpp-verification/resources/processes/cdc-workflow.svg.license new file mode 100644 index 000000000..bd477cd75 --- /dev/null +++ b/dpp-verification/resources/processes/cdc-workflow.svg.license @@ -0,0 +1,11 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). +See the [License](./CC-BY-4.0) for more information about usage of content and author attribution. +Author: [Mathias Brunkow Moser](https://github.com/matbmoser) + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass diff --git a/dpp-verification/resources/processes/csc-workflow.svg.license b/dpp-verification/resources/processes/csc-workflow.svg.license new file mode 100644 index 000000000..bd477cd75 --- /dev/null +++ b/dpp-verification/resources/processes/csc-workflow.svg.license @@ -0,0 +1,11 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). +See the [License](./CC-BY-4.0) for more information about usage of content and author attribution. +Author: [Mathias Brunkow Moser](https://github.com/matbmoser) + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass diff --git a/dpp-verification/resources/verification-logo.png.license b/dpp-verification/resources/verification-logo.png.license new file mode 100644 index 000000000..1a091b115 --- /dev/null +++ b/dpp-verification/resources/verification-logo.png.license @@ -0,0 +1,12 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). +See the [License](./CC-BY-4.0) for more information about usage of content and author attribution. +Generated using stable diffusion SDXL by [@matbmoser](https://github.com/matbmoser). + + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass From 30def941509e7db64b130f4f1149f348c618c9b6 Mon Sep 17 00:00:00 2001 From: Mathias Moser <71728767+matbmoser@users.noreply.github.com> Date: Tue, 23 Apr 2024 18:29:30 +0200 Subject: [PATCH 11/24] chore(dpp-verification): updated authors in footer --- dpp-verification/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 30e5af6ae..7b69a05ac 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -261,7 +261,8 @@ explanation of this Certification and Verification Concept. This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). See the [License](./CC-BY-4.0) for more information about usage of content and author attribution. -Author: [Mathias Brunkow Moser](https://github.com/matbmoser) + +Authors: [Mathias Brunkow Moser](https://github.com/matbmoser) - SPDX-License-Identifier: CC-BY-4.0 - SPDX-FileCopyrightText: 2023, 2024 BMW AG From 1f8943edea30ec1eca026b18d93fdc11b6260504 Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Wed, 24 Apr 2024 10:31:24 +0200 Subject: [PATCH 12/24] chore(dpp-verification): added more description in the certification process diagrams --- .gitignore | 1 + dpp-verification/resources/processes/cdc-csc-workflow.svg | 2 +- dpp-verification/resources/processes/cdc-workflow.svg | 2 +- dpp-verification/resources/processes/csc-workflow.svg | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 3c7f878e0..e3238a6d4 100644 --- a/.gitignore +++ b/.gitignore @@ -71,6 +71,7 @@ tgz ## Backup Files *.bck *.bak +*.bkp ######## Python - inspired by https://github.com/github/gitignore/blob/main/Python.gitignore diff --git a/dpp-verification/resources/processes/cdc-csc-workflow.svg b/dpp-verification/resources/processes/cdc-csc-workflow.svg index 5cb71384e..d970bb403 100644 --- a/dpp-verification/resources/processes/cdc-csc-workflow.svg +++ b/dpp-verification/resources/processes/cdc-csc-workflow.svg @@ -1,4 +1,4 @@ -
Total Certification Process
Data Provider
Create Digital Product Passport
Link DPP in 
Digital Twin
No
Additional
Certification
Required?
Store in 
Data Service
Yes
Request Auditor for
Attribute Certification
Receive CSC Credential
Add CSC in
Attribute Certification Record (ACR)
ACR
CSC
Store ACR in Data Service
Link to the Original Digital Twin
CSC
CSC
DPP
CDC
DT
Store in 
Digital Twin Registry
START
END
Create Certified Data Credential
Sign CDC Credential in the Wallet
Catena-X
EDC 
Push Notification
with EDC Url + DT ID
+ DPP Aspect ID +
List of Attributes Paths
to Certify
Data Auditor
Receive Request for 
Attribute Certification
Request the
Digital Twin
Request Digital Product Pass
Verify Attributes
in DPP Application
Create Certified Snapshot Credential
(CSC)
Sign CSC Credential in the Wallet
CSC
Send Data Provider the Signed Credential
EDC 
Push Notification
POST sending CSC in Body
Verifiable using DID
in Signature Proof
Get Digital Product Pass
from Data Service with
EDC
Get Digital Twin
from Digital Twin Registry
with EDC
\ No newline at end of file +
Total Certification Process
Data Provider
Create Digital Product Passport
Link CDC (DPP) in 
Digital Twin
No
Additional
Certification
Required?
Store in 
Data Service
Yes
Request Auditor for
Attribute Certification
Receive CSC Credential
Add CSC in
Attribute Certification Record (ACR)
ACR
CSC
Store ACR in Data Service
Link to the Original Digital Twin
CSC
CSC
DPP
CDC
DT
Store in 
Digital Twin Registry
START
END
Create Certified Data Credential (CDC)
Sign CDC Credential in the Wallet
Catena-X
EDC 
Push Notification
with EDC Url + DT ID
+ DPP Aspect ID +
List of Attributes Paths
to Certify
Data Auditor
Receive Request for 
Attribute Certification
Request the
Digital Twin
Request Digital Product Pass
Certify Attributes
in DPP Application
Create Certified Snapshot Credential
(CSC)
Sign CSC Credential in the Wallet
CSC
Send Data Provider the Signed Credential
EDC 
Push Notification
POST sending CSC in Body
Verifiable using DID
in Signature Proof
Get Digital Product Pass
from Data Service with
EDC
Get Digital Twin
from Digital Twin Registry
with EDC
\ No newline at end of file diff --git a/dpp-verification/resources/processes/cdc-workflow.svg b/dpp-verification/resources/processes/cdc-workflow.svg index 3514c1a05..b2ce6f4d1 100644 --- a/dpp-verification/resources/processes/cdc-workflow.svg +++ b/dpp-verification/resources/processes/cdc-workflow.svg @@ -1,4 +1,4 @@ -
Self-Testify Certification Process
Data Provider
Create Digital Product Passport
Link DPP in 
Digital Twin
Store in 
Data Service
DPP
CDC
DT
Store in 
Digital Twin Registry
START
END
Create Certified Data Credential
Sign CDC Credential in the Wallet
\ No newline at end of file +
Self-Testify Certification Process
Data Provider
Create Digital Product Passport
Link DPP in 
Digital Twin
Store in 
Data Service
DPP
CDC
DT
Store in 
Digital Twin Registry
START
END
Create Certified Data Credential
Sign CDC Credential in the Wallet
\ No newline at end of file diff --git a/dpp-verification/resources/processes/csc-workflow.svg b/dpp-verification/resources/processes/csc-workflow.svg index 407945a1b..4cdbd7994 100644 --- a/dpp-verification/resources/processes/csc-workflow.svg +++ b/dpp-verification/resources/processes/csc-workflow.svg @@ -1,4 +1,4 @@ -
Attribute Certification Process
Data Provider
Create Digital Product Passport
Link DPP in 
Digital Twin
No
Additional
Certification
Required?
Store in 
Data Service
Yes
Request Auditor for
Attribute Certification
Receive CSC Credential
Add CSC in
Attribute Certification Record (ACR)
ACR
CSC
Store ACR in Data Service
Link to the Original Digital Twin
CSC
CSC
DPP
DT
Store in 
Digital Twin Registry
START
END
Catena-X
EDC 
Push Notification
with EDC Url + DT ID
+ DPP Aspect ID +
List of Attributes Paths
to Certify
Data Auditor
Receive Request for 
Attribute Certification
Request the
Digital Twin
Request Digital Product Pass
Verify Attributes
in DPP Application
Create Certified Snapshot Credential
(CSC)
Sign CSC Credential in the Wallet
CSC
Send Data Provider the Signed Credential
EDC 
Push Notification
POST sending CSC in Body
Verifiable using DID
in Signature Proof
Get Digital Product Pass
from Data Service with
EDC
Get Digital Twin
from Digital Twin Registry
with EDC
\ No newline at end of file +
Attribute Certification Process
Data Provider
Create Digital Product Passport
Link DPP in 
Digital Twin
No
Additional
Certification
Required?
Store in 
Data Service
Yes
Request Auditor for
Attribute Certification
Receive CSC Credential
Add CSC in
Attribute Certification Record (ACR)
ACR
CSC
Store ACR in Data Service
Link to the Original Digital Twin
CSC
CSC
DPP
DT
Store in 
Digital Twin Registry
START
END
Catena-X
EDC 
Push Notification
with EDC Url + DT ID
+ DPP Aspect ID +
List of Attributes Paths
to Certify
Data Auditor
Receive Request for 
Attribute Certification
Request the
Digital Twin
Request Digital Product Pass
Certify Attributes
in DPP Application
Create Certified Snapshot Credential
(CSC)
Sign CSC Credential in the Wallet
CSC
Send Data Provider the Signed Credential
EDC 
Push Notification
POST sending CSC in Body
Verifiable using DID
in Signature Proof
Get Digital Product Pass
from Data Service with
EDC
Get Digital Twin
from Digital Twin Registry
with EDC
\ No newline at end of file From 6edba61dd931f8c1b12b02ceae59f1b47b4099c6 Mon Sep 17 00:00:00 2001 From: Mathias Moser <71728767+matbmoser@users.noreply.github.com> Date: Fri, 26 Apr 2024 14:31:10 +0200 Subject: [PATCH 13/24] chore(dpp-verification): added correct cc-by-4.0 copyright and author reference --- dpp-verification/CC-BY-4.0 | 395 ------------------ dpp-verification/README.md | 8 +- .../processes/cdc-csc-workflow.svg.license | 6 +- .../processes/cdc-workflow.svg.license | 6 +- .../processes/csc-workflow.svg.license | 6 +- .../resources/verification-logo.png.license | 7 +- 6 files changed, 20 insertions(+), 408 deletions(-) delete mode 100644 dpp-verification/CC-BY-4.0 diff --git a/dpp-verification/CC-BY-4.0 b/dpp-verification/CC-BY-4.0 deleted file mode 100644 index 102013379..000000000 --- a/dpp-verification/CC-BY-4.0 +++ /dev/null @@ -1,395 +0,0 @@ -Attribution 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution 4.0 International Public License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution 4.0 International Public License ("Public License"). To the -extent this Public License may be interpreted as a contract, You are -granted the Licensed Rights in consideration of Your acceptance of -these terms and conditions, and the Licensor grants You such rights in -consideration of benefits the Licensor receives from making the -Licensed Material available under these terms and conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - d. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - e. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - f. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - g. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - h. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - i. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - j. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - k. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part; and - - b. produce, reproduce, and Share Adapted Material. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - 4. If You Share Adapted Material You produce, the Adapter's - License You apply must not prevent recipients of the Adapted - Material from complying with this Public License. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material; and - - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - - -======================================================================= - -Creative Commons is not a party to its public -licenses. Notwithstanding, Creative Commons may elect to apply one of -its public licenses to material it publishes and in those instances -will be considered the “Licensor.” The text of the Creative Commons -public licenses is dedicated to the public domain under the CC0 Public -Domain Dedication. Except for the limited purpose of indicating that -material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the -public licenses. - -Creative Commons may be contacted at creativecommons.org. \ No newline at end of file diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 7b69a05ac..a1ce7260f 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -256,16 +256,16 @@ explanation of this Certification and Verification Concept. | VP | Verifiable Presentation | | W3C | World Wide Web Consortium | - ## NOTICE This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). -See the [License](./CC-BY-4.0) for more information about usage of content and author attribution. - -Authors: [Mathias Brunkow Moser](https://github.com/matbmoser) - SPDX-License-Identifier: CC-BY-4.0 - SPDX-FileCopyrightText: 2023, 2024 BMW AG - SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG - SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation - Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file diff --git a/dpp-verification/resources/processes/cdc-csc-workflow.svg.license b/dpp-verification/resources/processes/cdc-csc-workflow.svg.license index bd477cd75..5b528f257 100644 --- a/dpp-verification/resources/processes/cdc-csc-workflow.svg.license +++ b/dpp-verification/resources/processes/cdc-csc-workflow.svg.license @@ -1,11 +1,13 @@ ## NOTICE This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). -See the [License](./CC-BY-4.0) for more information about usage of content and author attribution. -Author: [Mathias Brunkow Moser](https://github.com/matbmoser) - SPDX-License-Identifier: CC-BY-4.0 - SPDX-FileCopyrightText: 2023, 2024 BMW AG - SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG - SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation - Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file diff --git a/dpp-verification/resources/processes/cdc-workflow.svg.license b/dpp-verification/resources/processes/cdc-workflow.svg.license index bd477cd75..5b528f257 100644 --- a/dpp-verification/resources/processes/cdc-workflow.svg.license +++ b/dpp-verification/resources/processes/cdc-workflow.svg.license @@ -1,11 +1,13 @@ ## NOTICE This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). -See the [License](./CC-BY-4.0) for more information about usage of content and author attribution. -Author: [Mathias Brunkow Moser](https://github.com/matbmoser) - SPDX-License-Identifier: CC-BY-4.0 - SPDX-FileCopyrightText: 2023, 2024 BMW AG - SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG - SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation - Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file diff --git a/dpp-verification/resources/processes/csc-workflow.svg.license b/dpp-verification/resources/processes/csc-workflow.svg.license index bd477cd75..5b528f257 100644 --- a/dpp-verification/resources/processes/csc-workflow.svg.license +++ b/dpp-verification/resources/processes/csc-workflow.svg.license @@ -1,11 +1,13 @@ ## NOTICE This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). -See the [License](./CC-BY-4.0) for more information about usage of content and author attribution. -Author: [Mathias Brunkow Moser](https://github.com/matbmoser) - SPDX-License-Identifier: CC-BY-4.0 - SPDX-FileCopyrightText: 2023, 2024 BMW AG - SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG - SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation - Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file diff --git a/dpp-verification/resources/verification-logo.png.license b/dpp-verification/resources/verification-logo.png.license index 1a091b115..5b528f257 100644 --- a/dpp-verification/resources/verification-logo.png.license +++ b/dpp-verification/resources/verification-logo.png.license @@ -1,12 +1,13 @@ ## NOTICE This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). -See the [License](./CC-BY-4.0) for more information about usage of content and author attribution. -Generated using stable diffusion SDXL by [@matbmoser](https://github.com/matbmoser). - - SPDX-License-Identifier: CC-BY-4.0 - SPDX-FileCopyrightText: 2023, 2024 BMW AG - SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG - SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation - Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file From b8cd259313af92b23404ff8b39a76757d156876f Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Tue, 30 Apr 2024 18:24:00 +0200 Subject: [PATCH 14/24] feat(dpp-verification): added process and roles descriptions --- dpp-verification/README.md | 61 ++++++++++++++++--- .../processes/role-process-definition.svg | 4 ++ .../role-process-definition.svg.license | 13 ++++ .../processes/roles-business-interaction.svg | 4 ++ .../roles-business-interaction.svg.license | 13 ++++ .../roles-document-exchange-interaction.svg | 4 ++ ...-document-exchange-interaction.svg.license | 13 ++++ 7 files changed, 102 insertions(+), 10 deletions(-) create mode 100644 dpp-verification/resources/processes/role-process-definition.svg create mode 100644 dpp-verification/resources/processes/role-process-definition.svg.license create mode 100644 dpp-verification/resources/processes/roles-business-interaction.svg create mode 100644 dpp-verification/resources/processes/roles-business-interaction.svg.license create mode 100644 dpp-verification/resources/processes/roles-document-exchange-interaction.svg create mode 100644 dpp-verification/resources/processes/roles-document-exchange-interaction.svg.license diff --git a/dpp-verification/README.md b/dpp-verification/README.md index a1ce7260f..f0ae4e506 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -44,11 +44,11 @@ SPDX-License-Identifier: Apache-2.0 ## Authors -| Name | GitHub | Role | -| --------------------- | ------------------------------------------ | --------------------------------------- | -| Mathias Brunkow Moser | [@matbmoser](https://github.com/matbmoser) | Digital Product Pass Software Architect | -| | | | -| | | | +| Name | Company | GitHub | Role | +| --------------------- | ------- |------------------------------------------ | --------------------------------------- | +| Mathias Brunkow Moser | CGI | [@matbmoser](https://github.com/matbmoser) | Digital Product Pass Software Architect | +| | | | | +| | | | | ## Tags @@ -144,6 +144,52 @@ When talking about the certification and verification of data we can find severa | **Easing Decision Taking** | When companies need to take important decisions, having external verified attributes/aspect can make a huge difference in which way to go or which product to choose. | | **Secure Data Against Fraud** | The data providers by verifying and signing digitately their data when issued, are **transparently being protected against fraud or false accusations**, because they can demonstrate the data was verified by an external auditors or their internal quality management. | +# Previous Investigation + +> [!WARNING] +> Previous investigation is still not available here! + + +# Processes Terminology + +The naming from the different processes is important when it comes to differentiating the role from each actor. + +The process terminology from **Data Consumer** to **Data Provider** is called **Data Verification Process** and can optionally be also done between the data auditor and the data consumer. + +The other terminology from **Data Provider** to **Data Auditor** is called **Data Certification Process.** + +![Role-Process Definition](./resources/processes/role-process-definition.svg) + +|**Process Terminology**|**Actors**|**Description**|**Artifacts**| +| :-- | :-: | :-- | :-: | +|**Data Verification**|Data Consumer, Data Provider, Data Auditor|The data verification process englobes the complete journey from retrieving data as a data consumer from a data provider. It includes the search for verification statements and attribute level verification in digital twins.At the end of the journey attribute specific verification may or not be found. Other types of verification like self attestations may be or not retrieved. Depends in the available verification information.In the data verification process is included the verification of the signatures included in the data created and certified in the Data Certification Process. |**Verification Result** *with the status/flaws*| +|**Data Certification**|Data Provider, Data Auditor|The data certification process includes all the processes related to triggering the verification until providing the data for certifying specific attributes.The data provider triggers the certification for a external or internal data auditor, which generates and optionally stores a verification statements|**Certified Data Aspects** *as Verification Statements*| + +## **Roles/Actors** +Three main roles are defined and have certain responsibilities or can conduct actions in the processes. Each role can have more than one W3C role and generate different artifacts as specified in the following table: + +|**Role/Actors**|**Company Types**|**W3C Roles**|**Responsibilities/Actions**|**Use Cases**|**Artifacts**| +| :-- | --- | --- | :-- | :-- | :-- | +|Data Provider|OEMs, Tier-1|Issuer, Holder|- Creating and Issuing Data- Refence/Provision of data in a Digital Twin Registry
- Store and link complete data submodels in a infrastructure
- **[OPTIONAL]:** Self-sign data when issuing aspects
- **[OPTIONAL]:** Provide and Store certified credentials from external parties
- Store link to external parties certified credential aspects in Digital Twin Registry
- Requests and pays external parties (data auditors) to audit their data|As a data provider I want to be able to hand over my data to consumers and auditors. I want also to be able to manage my data and verified assets. In some cases I want to be able to self-testify my own issued data.| **Digital Twin + Submodels with EDC Endpoints for CDC and CSC** Certified Data Credential (CDC) or Plain **Digital Product Pass**
**[OPTIONAL]:** Storage of Certified Snapshot Credentials (CSC) in **Verification Statements Aspect**| +|Data Auditor|Auditors, Certification Agencies, Consulting Companies, OEMs|Issuer, **Optional: Holder** | - Selects from the data provider data some attributes following selective disclosure.- Certifies Attributes against "methods". And indicate in the generated credential which methods were used for certifying  For example:  - Standards - Rulebooks - Regulations - Manuals - Technical Specifications - etc...- Creates and issues a **Certified Verification Statement**- **[OPTIONAL]:** Provide and Store certified credentials|As a data auditor I want to be able to retrieve and visualize the data I need to audit. I also want to be able to "select" then "certify" specific attributes I was payed to audit by a Data Provider.|Certified Snapshot Credentials (CSC) in **Verification Statements Aspect**
**[OPTIONAL]:** Storage of Verification Aspect and provision through EDC| +|Data Consumer|Recyclers, Dismantlers, OEMs, Tier-1|Verifier|- Initializes the data retrieval process (Requesting the Data Provider).- Searches for the Verification Data after the data retrieval process. (Looking in the Data Provider Digital Twin)- Verifies signatures against a wallet if the data and attribute credentials received are correct.- Verifies data semantics and data plausibility against the data model semantics/restrictions.- Presents the verification result |As a data consumer I want to be able to know if the data I received is verified and which attributes are certified by an external auditor. I also want to be able to verify that the data certified is authentic and has been issued and signed by a Data Auditor or a Data Provider|**Verification Result Presentation**| + +### Abstract Interaction (Business Interaction) +In the following diagram we can observe how the data provider, the data auditor and the data consumer interact:# Certification Processes + +![Roles Business Interaction](./resources/processes/roles-business-interaction.svg) + +The **Data Provider** is always the one that has control from its own data, following the data sovereignty concept. He offers its own data to the **data consumers** and **data auditors**. +The **Data Consumer** `verifies` the data incoming from the **data provider** and certified by the **data auditor**. +The **Data Auditor** retrieves data from the **data provider** and `certifies` the data against standards, then sends the `verification statement or certificate` to the **data provider**. + +### Document Exchange Details +The different roles will exchange different document which will contain, information and proof of the data which is being exchanged. + +![Roles Document Exchange Interaction](./resources/processes/roles-document-exchange-interaction.svg) + +**Data Providers** will be providing data for the *Data Consumers* and the *Data Auditors*. +This data may vary depending on the data exchanged and certified by the *Data Auditors*. The auditors # Certification Processes @@ -154,11 +200,6 @@ For easing the understanding from the certification process and the interaction > The Certification Processes of data are valid equally for `Type` level digital twins (Aspect Model in Type Level) or `Instance` digital twins (Aspect Model in Serialized Level). The difference relies on the configuration of the digital twin, and in which level the certification wants to be done. > Is important to know that the certification **MUST** be at the same level always. If we talk about a Digital Twin in Type Level, then the Digital Product Pass or any aspect model will contain Type level data, as well as the verified attributes. -## Certification Types - - - - ## Attribute Certification Process The attribute certification is based on a plain JSON Aspect Model Payload that contains the information from a digital product pass. It starts with the `data provider` that creates the `digital product passport` with the available information from and storing it in the `data service`. Once that is done the data will be linked in a `digital twin`, so in this way by receiving the digital twin and searching for the passport submodel it can be found. After that it will be stored in the `digital twin registry`. Now if any attribute level certification is required to be done by an auditor, a `request` will be triggered from the data provider side, so a `EDC Push Notification` will be sent to the `data auditor` with the EDC Provider URL, the Digital Twin Id and the DPP Aspect Submodel Id (unique identification) diff --git a/dpp-verification/resources/processes/role-process-definition.svg b/dpp-verification/resources/processes/role-process-definition.svg new file mode 100644 index 000000000..954b278b8 --- /dev/null +++ b/dpp-verification/resources/processes/role-process-definition.svg @@ -0,0 +1,4 @@ + + + +
Certification
Certification
Provider
Provider
Verification
Verification
Consumer
Consumer
Verification
Verification
Auditor
Auditor
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/processes/role-process-definition.svg.license b/dpp-verification/resources/processes/role-process-definition.svg.license new file mode 100644 index 000000000..4bd508f93 --- /dev/null +++ b/dpp-verification/resources/processes/role-process-definition.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file diff --git a/dpp-verification/resources/processes/roles-business-interaction.svg b/dpp-verification/resources/processes/roles-business-interaction.svg new file mode 100644 index 000000000..c095c87cf --- /dev/null +++ b/dpp-verification/resources/processes/roles-business-interaction.svg @@ -0,0 +1,4 @@ + + + +
Provide Data + Certified Data Attributes
Provide Data + Certified Data Attributes
Data
Provider
Data...
Check Signature + Revocation List
Check Signature + Revocation List
Data
Consumer
Data...
Check Signature + Revocation List
Check Signature + Revocation List
Data
Auditor
Data...
Certified Data Attributes
Certified Data Attributes
Provide Data
Provide Data
Certifies Attributes,
and Signs Document Electronically
Certifies Attributes,...
Creates, Self-Signs Data
and Stores it
Creates, Self-Signs Data...
Introduces Product Identification,
Verifies and Visualizes Data
Introduces Product Identificat...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/processes/roles-business-interaction.svg.license b/dpp-verification/resources/processes/roles-business-interaction.svg.license new file mode 100644 index 000000000..4bd508f93 --- /dev/null +++ b/dpp-verification/resources/processes/roles-business-interaction.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file diff --git a/dpp-verification/resources/processes/roles-document-exchange-interaction.svg b/dpp-verification/resources/processes/roles-document-exchange-interaction.svg new file mode 100644 index 000000000..de5301fe5 --- /dev/null +++ b/dpp-verification/resources/processes/roles-document-exchange-interaction.svg @@ -0,0 +1,4 @@ + + + +
Data
Provider
Data...
Check JWS Against
Public Key + Revocation List
Check JWS Against...
Data
Consumer
Data...
Check JWS Against Public Key + Revocation List
Check JWS Against Public Key + Revocation List
Data
Auditor
Data...
Digital Product Pass in CDC or Plain
+ Digital Twin + CSC
Digital Product Pass in CDC or Plain...
Certified Data Attributes in CSC
Certified Data Attributes in CSC
Digital Product Pass in CDC or Plain
Digital Product Pass in CDC or Plain
Certifies Attributes,
Signs CSC
Certifies Attributes...
Creates DPP, Self-Signs CDC
and Stores it in Digital Twin
Creates DPP, Self-Signs CDC...
Introduces Product Identification,
Verifies CDC + CSC and Visualizes
Verified and Unverified data
Introduces Product Identification...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/processes/roles-document-exchange-interaction.svg.license b/dpp-verification/resources/processes/roles-document-exchange-interaction.svg.license new file mode 100644 index 000000000..4bd508f93 --- /dev/null +++ b/dpp-verification/resources/processes/roles-document-exchange-interaction.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file From 6775388c9a8d83240e12de163e1bdde242fd8039 Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Fri, 3 May 2024 19:46:24 +0200 Subject: [PATCH 15/24] chore(logo): added new dpp logo --- .gitignore | 2 ++ README.md | 10 ++++++++-- docs/media/dpp-tx-logo.png | Bin 0 -> 213764 bytes dpp-backend/digitalproductpass/.gitignore | 2 ++ 4 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 docs/media/dpp-tx-logo.png diff --git a/.gitignore b/.gitignore index e3238a6d4..2291567e6 100644 --- a/.gitignore +++ b/.gitignore @@ -73,6 +73,8 @@ tgz *.bak *.bkp +bin + ######## Python - inspired by https://github.com/github/gitignore/blob/main/Python.gitignore __pycache__/ diff --git a/README.md b/README.md index 1b86635c7..12b66c8b2 100644 --- a/README.md +++ b/README.md @@ -21,13 +21,19 @@ SPDX-License-Identifier: Apache-2.0 --> -

  Digital Product Pass Application

- [![Contributors][contributors-shield]][contributors-url] [![Stargazers][stars-shield]][stars-url] [![Apache 2.0 License][license-shield]][license-url] [![Latest Release][release-shield]][release-url] +
+ Digital Product Pass App Logo +
+

Digital Product Pass Application

+
+ + + ## Description The digital product passport application provides a consumer user interface to request a battery passport from a battery manufacturer using the standardized components and technologies in a Catena-X network. The passport will be displayed in a human-readable from any browser. The data exchange standards given by Catena-X are used to provide the battery passport to different personas (roles) in the network. diff --git a/docs/media/dpp-tx-logo.png b/docs/media/dpp-tx-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..abbd7960f21b7a262d251aa2478cd8d25533dd08 GIT binary patch literal 213764 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

LBtC1 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

sWF~q@MN%`(#wP6As2r+VYpYkijRX%!@UiLt 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 k Date: Sun, 12 May 2024 15:31:00 +0200 Subject: [PATCH 16/24] chore(dpp-verification): added verification statements --- dpp-verification/README.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/dpp-verification/README.md b/dpp-verification/README.md index f0ae4e506..9a848836b 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -28,7 +28,9 @@ SPDX-License-Identifier: Apache-2.0

Version:  v1.0 STATUS: IN PROGRESS +

Catena-X Data Verification Framework

Digital Product Pass Verification Add-on

+ > [!CAUTION] @@ -53,7 +55,7 @@ SPDX-License-Identifier: Apache-2.0 ## Tags > [!NOTE] -> #Cybersecurity #DataVerification #DataCertification #Catena-X #DigitalProductPassVerification #DPP #SignedDocuments #DataCredentials +> #Cybersecurity #DataVerification #DataCertification #Catena-X #DigitalProductPassVerification #DPP #SignedDocuments #DataCredentials # Framework > #DigitalProductPass #VerifiableCredentials #Wallets #DecentralIdenties #SSI #ProductDataExchangeTrust #Verification #Innovation #Ed25519 #JWS #Web3.0 @@ -191,6 +193,26 @@ The different roles will exchange different document which will contain, informa **Data Providers** will be providing data for the *Data Consumers* and the *Data Auditors*. This data may vary depending on the data exchanged and certified by the *Data Auditors*. The auditors +# Verification Statements + +For our technical implementation from the Certification/Verification of aspect models and attributes we can abstract two type of verification statements: + +## Abstract Types + +| Type | Description | +| -- | -- | +|Complete Data Verification Statement | Self Signed Document containing the complete data from a aspect model payload. | +|Partial Data Verification Statement|Attribute level certified document containing one or more attributes from the **Complete Data Verification Statement** or from a **Plain JSON Aspect Model payload**. | + +## Verification Statements Documents/Credentials + +The different verificaiton statement types were mapped to certain technical verification statement documents which encapsulate the certification and verification of attributes in the framework. + +| Document/Credential Name | Short Name |Issuer |Verification Statement Type | Content | Description | +| -- | -- | -- | -- | -- | -- | +| **Certified Data Credential** | **CDC** | Data Provider | Complete Data Verification Statement | 1. Complete Aspect Model Payload Data
2. Signature from Data Issuer
3. Version Control | Credential that contains the complete passport and is signed by the issuer of the data. It allows to track changes during the updates from the passport in the supply chain.
It can be "self-testified" by the data provider when creating/issuing the passport data. | +| **Certified Snapshot Credential** | **CSC** | Data Auditor | Partial Data Verification Statement | 1. Selected attributes from the Aspect Model Payload Data
2. Hashed "proofs" per attribute and data auditor signature
3. Methods used to "certify" each attribute
4. Reference to Audited Complete Verification Statement Content | Credential that follows "selective disclosure" by hashing the verified fields allowing the verification in milliseconds by just comparing hashes. It contains the "partial" digital product pass.
It is signed by the Auditor of the data attributes at the end of the certification, indicating the attributes which are included there were certified against specific "methods". | + # Certification Processes For easing the understanding from the certification process and the interaction between the Data Provider and the Data Auditor, some diagrams are provided where the different interactions and artifacts generated are mapped. From 2d52fb9e9458b41b5cee23d4d1ea836ebd02a69e Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Sun, 12 May 2024 15:54:44 +0200 Subject: [PATCH 17/24] chore(dpp-verification): added trust and risk mitigation chapter --- dpp-verification/README.md | 77 +++++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 9a848836b..87d6f23f4 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -204,15 +204,90 @@ For our technical implementation from the Certification/Verification of aspect m |Complete Data Verification Statement | Self Signed Document containing the complete data from a aspect model payload. | |Partial Data Verification Statement|Attribute level certified document containing one or more attributes from the **Complete Data Verification Statement** or from a **Plain JSON Aspect Model payload**. | + ## Verification Statements Documents/Credentials -The different verificaiton statement types were mapped to certain technical verification statement documents which encapsulate the certification and verification of attributes in the framework. +The different verificaiton statement types were mapped to certain technical verification statement documents which encapsulate the certification and verification of attributes in the framework. Using the **Verifiable Credential** technology from the W3C we are able to idenfity to different documents to have signature from different issuers: + +> [!TIP] +> +> For more information about what is a verifiable credential [go to this chapter](#what-is-a-verifiable-credential). + | Document/Credential Name | Short Name |Issuer |Verification Statement Type | Content | Description | | -- | -- | -- | -- | -- | -- | | **Certified Data Credential** | **CDC** | Data Provider | Complete Data Verification Statement | 1. Complete Aspect Model Payload Data
2. Signature from Data Issuer
3. Version Control | Credential that contains the complete passport and is signed by the issuer of the data. It allows to track changes during the updates from the passport in the supply chain.
It can be "self-testified" by the data provider when creating/issuing the passport data. | | **Certified Snapshot Credential** | **CSC** | Data Auditor | Partial Data Verification Statement | 1. Selected attributes from the Aspect Model Payload Data
2. Hashed "proofs" per attribute and data auditor signature
3. Methods used to "certify" each attribute
4. Reference to Audited Complete Verification Statement Content | Credential that follows "selective disclosure" by hashing the verified fields allowing the verification in milliseconds by just comparing hashes. It contains the "partial" digital product pass.
It is signed by the Auditor of the data attributes at the end of the certification, indicating the attributes which are included there were certified against specific "methods". | + +# Creating Trust and Risk Mitigation Assets + +> Why to place trust in companies which certify data? + +The companies auditing the data must be authorized and given the trust +from another member party to issue data related credentials. Only + +We know we humans make mistakes. When third party companies already known +in the business of providing trust and certifications for specific assets. This assets would be audited or its original data would be audited, and then will be compared to the different **Regulations**, **Standards** and **Rulebooks** that define if the data content is: + +- Certify data plausibility (that the values make sense) +- Certify that the attribute values in the data that follow the standards. +- Certify Structure and semantics that follow the standards +- Certify that the actual physical asset has the content which is placed in the Digital Product Pass serialized or type payload. +- Certify that issuance of data to prevent fraud + +## Verifiable Credential Documents + +The idea behind the verifiable credentials is to provide signed proof +for a content. This credential is a JSON-LD structure, which contains +the "data" that was certified and the proof is able to be verified by +resolving the "DID Method" contained in the bottom of the credential. + +But what is a verifiable credential? + +### What is a Verifiable Credential? + +According to the W3C +() +a verifiable credential is: + +- Information related to identifying + the [subject](https://www.w3.org/TR/vc-data-model-2.0/#dfn-subjects) of + the [credential](https://www.w3.org/TR/vc-data-model-2.0/#dfn-credential) (for + example, a photo, name, or identification number) + +- Information related to the issuing authority (for example, a city + government, national agency, or certification body) + +- Information related to the type + of [credential](https://www.w3.org/TR/vc-data-model-2.0/#dfn-credential) this + is (for example, a Dutch passport, an American driving license, or a + health insurance card) + +- Information related to specific attributes or properties being + asserted by the issuing authority about + the [subject](https://www.w3.org/TR/vc-data-model-2.0/#dfn-subjects) (for + example, nationality, the classes of vehicle entitled to drive, or + date of birth) + +- Evidence related to how + the [credential](https://www.w3.org/TR/vc-data-model-2.0/#dfn-credential) was + derived + +- Information related to constraints on the credential (for example, + validity period, or terms of use). + +A [verifiable +credential](https://www.w3.org/TR/vc-data-model-2.0/#dfn-verifiable-credential) can +represent all of the same information that a +physical [credential](https://www.w3.org/TR/vc-data-model-2.0/#dfn-credential) represents. +The addition of technologies, such as digital signatures, +makes [verifiable +credentials](https://www.w3.org/TR/vc-data-model-2.0/#dfn-verifiable-credential) more +tamper-evident and more trustworthy than their physical counterparts. + +In this concept **Verifiable Credentials** are not representing the identities from the Product but are some sort of **Documents** which contain the actual information from a product and are **signed** by issuer of the data or in case of partial data certified, signed by a data auditor. + # Certification Processes For easing the understanding from the certification process and the interaction between the Data Provider and the Data Auditor, some diagrams are provided where the different interactions and artifacts generated are mapped. From 194136988388f8b6b50e4884f347551b7b1fc655 Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Sun, 12 May 2024 16:22:01 +0200 Subject: [PATCH 18/24] feat(dpp-verification): added chapter for assumptions and creating trust and mitigating risk --- dpp-verification/README.md | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 87d6f23f4..52ee3806b 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -88,7 +88,6 @@ This concept has been proved to be of high interest from the Certification and V - [References](#references) - [Special Thanks](#special-thanks) - [Glossary](#glossary) - # Introduction @@ -193,6 +192,25 @@ The different roles will exchange different document which will contain, informa **Data Providers** will be providing data for the *Data Consumers* and the *Data Auditors*. This data may vary depending on the data exchanged and certified by the *Data Auditors*. The auditors +# Asumptions + +When we talk about verification and certification processes, serveral questions and concerns can be raised in regards of making it productive and implementable. +When a concept is developed not all the processes and problems can be addressed, therefore this concept has some conditions that should be considered. +Therefore we have decided to list the initial asumptions that are required for this verification process to be successful: + +| Asumption | Description | +| --- | ----- | +| **Digital Product Pass Process Creation is established** | The digital product pass process is a complex process that is implemented in each *Data Provider* and is tailored to the systems and application avaialable in each company. This concepts starts its journey from the assumption that the digital product pass data is already available in the **Data Provider** infrastructure as a **Serialized Aspect Model Payload** | +| **Data Exchange is Standardized** | As we know in Catena-X the data exchange between partners in this case need to be standardized, there fore the digital product pass data and all the related statements will be standardized and available for all members of the network to be able to parse and handle the fields and certifications. | +| **Data Certification Process is defined by Data Auditor** | The complexity of the certification process is high and can vary from auditor company to company. Therefore in this concept there was decided to resume the certification of attributes to the most unitary and simple **Technical Solution**, allowing each company to adopt and implement the process according to its needs and requirements. | +| **Only minimum exchanged data is specified** | Only the minimum exchanged data is specified when transfering data from one company to another. When a certification process is triggered there are many other attributes, data and elements to be specified. Only the neccessary attributes to retrieve the data are specified in this concept to keep things simple and indicate the MVP attributes needed to make it possible. | +| **All legal requirements are fullfilled** | In this company we asume that the company has all the neccessary legal requirements and agreements to exchange data with its partners in the Catena-X network, policies and permissions are not going to be specified, all the EDC configurations are the ones specified by the Catena-X network. For more information [see this specification](https://github.com/catenax-eV/cx-odrl-profile). | +| **The digital product pass standards are followed** | The digital twin registry and data service must be implemented as indicated in the latest CX standard for digital product passports and other products. | +| **The certification and verification are not limited to digital product passports** | This concept sets the initial path to verify any aspect model payload in Catena-X that uses JSON as its serialized representation. The concept is tailored to digital product passports since the **EcoDesign** regulations are playing a important role in the future of Data Ecosystems like *Catena-X*. | +| **The wallets used in the concept allow to sign any type of credential** | In order for the concept to work the wallets need to be able to sign any credential document using the private key, and also enable the "DID" endpoint to retrieve the public keys through the internet (DID WEB). | +| **Each company MUST have an decentral wallet** | In order to sign the credentials by your own as company you need to have a valid that fits to the decentralized wallets concept that is going to be standardized in Catena-X. | +| **All data exchanges are done through the Eclipse DataSpace Connector** | Every company **MUST** have a EDC in order to provide data to othere parties and consume data from other partners. Data sovereighty is followed and shall use the guidelines provided by the Catena-X network. | + # Verification Statements For our technical implementation from the Certification/Verification of aspect models and attributes we can abstract two type of verification statements: @@ -219,7 +237,6 @@ The different verificaiton statement types were mapped to certain technical veri | **Certified Data Credential** | **CDC** | Data Provider | Complete Data Verification Statement | 1. Complete Aspect Model Payload Data
2. Signature from Data Issuer
3. Version Control | Credential that contains the complete passport and is signed by the issuer of the data. It allows to track changes during the updates from the passport in the supply chain.
It can be "self-testified" by the data provider when creating/issuing the passport data. | | **Certified Snapshot Credential** | **CSC** | Data Auditor | Partial Data Verification Statement | 1. Selected attributes from the Aspect Model Payload Data
2. Hashed "proofs" per attribute and data auditor signature
3. Methods used to "certify" each attribute
4. Reference to Audited Complete Verification Statement Content | Credential that follows "selective disclosure" by hashing the verified fields allowing the verification in milliseconds by just comparing hashes. It contains the "partial" digital product pass.
It is signed by the Auditor of the data attributes at the end of the certification, indicating the attributes which are included there were certified against specific "methods". | - # Creating Trust and Risk Mitigation Assets > Why to place trust in companies which certify data? @@ -297,7 +314,8 @@ For easing the understanding from the certification process and the interaction > The Certification Processes of data are valid equally for `Type` level digital twins (Aspect Model in Type Level) or `Instance` digital twins (Aspect Model in Serialized Level). The difference relies on the configuration of the digital twin, and in which level the certification wants to be done. > Is important to know that the certification **MUST** be at the same level always. If we talk about a Digital Twin in Type Level, then the Digital Product Pass or any aspect model will contain Type level data, as well as the verified attributes. -## Attribute Certification Process +## Attribute Certification Process + The attribute certification is based on a plain JSON Aspect Model Payload that contains the information from a digital product pass. It starts with the `data provider` that creates the `digital product passport` with the available information from and storing it in the `data service`. Once that is done the data will be linked in a `digital twin`, so in this way by receiving the digital twin and searching for the passport submodel it can be found. After that it will be stored in the `digital twin registry`. Now if any attribute level certification is required to be done by an auditor, a `request` will be triggered from the data provider side, so a `EDC Push Notification` will be sent to the `data auditor` with the EDC Provider URL, the Digital Twin Id and the DPP Aspect Submodel Id (unique identification) From 378e0c70a70acbb34f31aaa58c3b703ace3b7b88 Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Sun, 12 May 2024 16:44:03 +0200 Subject: [PATCH 19/24] feat(dpp-verification): added credential schema --- dpp-verification/README.md | 44 ++++++++++++++++++- .../processes/document-credential-resume.svg | 4 ++ .../document-credential-resume.svg.license | 13 ++++++ 3 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 dpp-verification/resources/processes/document-credential-resume.svg create mode 100644 dpp-verification/resources/processes/document-credential-resume.svg.license diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 52ee3806b..c32668421 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -80,15 +80,39 @@ This concept has been proved to be of high interest from the Certification and V ## Table of Contents - +- [Metadata](#metadata) + - [Authors](#authors) + - [Tags](#tags) +- [Abstract](#abstract) + - [Table of Contents](#table-of-contents) - [Introduction](#introduction) - [Value Proposition Motivators](#value-proposition-motivators) - [Objectives](#objectives) - [Use Cases](#use-cases) +- [Previous Investigation](#previous-investigation) +- [Processes Terminology](#processes-terminology) + - [**Roles/Actors**](#rolesactors) + - [Abstract Interaction (Business Interaction)](#abstract-interaction-business-interaction) + - [Document Exchange Details](#document-exchange-details) +- [Asumptions](#asumptions) +- [Verification Statements](#verification-statements) + - [Abstract Types](#abstract-types) + - [Verification Statements Documents/Credentials](#verification-statements-documentscredentials) +- [Creating Trust and Risk Mitigation Assets](#creating-trust-and-risk-mitigation-assets) + - [Verifiable Credential Documents](#verifiable-credential-documents) + - [What is a Verifiable Credential?](#what-is-a-verifiable-credential) + - [Credential Schema](#credential-schema) +- [Certification Processes](#certification-processes) + - [Attribute Certification Process](#attribute-certification-process) + - [Self-Testify Certification Process](#self-testify-certification-process) + - [Total Certification Process](#total-certification-process) +- [Technical Integration](#technical-integration) - [References](#references) - [Special Thanks](#special-thanks) - [Glossary](#glossary) - + - [NOTICE](#notice) + - [AUTHORS](#authors-1) + # Introduction @@ -305,6 +329,20 @@ tamper-evident and more trustworthy than their physical counterparts. In this concept **Verifiable Credentials** are not representing the identities from the Product but are some sort of **Documents** which contain the actual information from a product and are **signed** by issuer of the data or in case of partial data certified, signed by a data auditor. +### Credential Schema + +The signed document credential has the following resumed schema: + +![Configuration Sections](./resources/processes/document-credential-resume.svg) + +Depending in each verification types different configuration will be provided in the location of the payload aspect or specific attributes. The detailed configuration is defined in the [Technical Integration](#technical-integration) chapter. + +| Section | Description | +| --- | ---- | +| **Metadata** | The metadata contains the context information and credential schema details. Also contains the identification of the credential and which documents it contained. | +| **Aspect Model Data / Credential Data** | In this section is defined all the neccessary data of each credential type. The specific attributes with methods and proof from data auditor or the original data issued and sigend by the data provider.| +| **Proof and Verification Methods** | This section contain the digital signature from the Data Provider or Data Auditor. It also contains all the methods for a Data Verifier/Data Consumer to access the verification requirements to check if the credential is still valid and not revoked.| + # Certification Processes For easing the understanding from the certification process and the interaction between the Data Provider and the Data Auditor, some diagrams are provided where the different interactions and artifacts generated are mapped. @@ -342,6 +380,8 @@ The total certification process is the same as the attribute verification proces ![](./resources/processes/cdc-csc-workflow.svg) +# Technical Integration + # References diff --git a/dpp-verification/resources/processes/document-credential-resume.svg b/dpp-verification/resources/processes/document-credential-resume.svg new file mode 100644 index 000000000..5f9b45c25 --- /dev/null +++ b/dpp-verification/resources/processes/document-credential-resume.svg @@ -0,0 +1,4 @@ + + + +
Digital Product Pass / Aspect Model Payload
Complete Aspect
or
Specific Attributes
Digital Product Pass / Aspect Model Payload...
Verifiable Credential Document
Verifiable Credential Document
Proof and Verification Methods
Proof and Verification Methods
Metadata
Metadata
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/processes/document-credential-resume.svg.license b/dpp-verification/resources/processes/document-credential-resume.svg.license new file mode 100644 index 000000000..4bd508f93 --- /dev/null +++ b/dpp-verification/resources/processes/document-credential-resume.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file From b893303b48102d5d9071734841f3730b562237b0 Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Mon, 13 May 2024 19:07:56 +0200 Subject: [PATCH 20/24] chore(dpp-verification): updated docs to reflect latest changes --- dpp-verification/README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/dpp-verification/README.md b/dpp-verification/README.md index c32668421..84a1ab0a5 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -41,7 +41,7 @@ SPDX-License-Identifier: Apache-2.0 | | Date | Authors & Reviewers | | -------------------- | ----------------- | ----------------------------------------------------- | | **Created** | December 29, 2023 | [Mathias Brunkow Moser](https://github.com/matbmoser) | -| **Lastest Revision** | April 23, 2024 | [Mathias Brunkow Moser](https://github.com/matbmoser) | +| **Lastest Revision** | May 13, 2024 | [Mathias Brunkow Moser](https://github.com/matbmoser) | ## Authors @@ -72,7 +72,7 @@ Product Information Certification is the way to go when it comes to creating tru This Digital Product Pass Verification and Certification concept aims to create an assertive second layer of trust over the actual peer to peer data exchanges of Product Information. Basing itself in the SSI technology already in place in Catena-X, this concept sets the first steps for data verification statements creation starting with the CX Generic Digital Product Pass Aspect Model. Giving the data providers the possibility of creating self signed documents confirming the information placed into the aspect models and gives data auditors the possibility to certify one or more specific attributes from Aspect Model documents that are relevant to the data provider business cases. It allows the data consumer to base its processes and decisions based on actual production data which has been assertive verified by external auditors, giving safety that not just the data issuer by also a third party has certified that specific data is true or compliant to standards. -> The technology concept consists of creating Signed Documents (Verification Statements) using the Verifiable Credentials 2.0 Technology. Which is in resume a JSON-LD structure standardized by the W3C Consortium for Web 3.0 for data trust and identity assurance. Using JSON Web Signatures (JWS) and a wallet component which is connected to Catena-X and identified by the unique company Business Partner Number (BPN), the data issuer and auditor can sign using their Ed25519 private key and the data consumer can access their public key by resolving the DID contained in the signature proof at the certified document credential. The certified data will be stored in the Data Provider infrastructure sub-model server, in order to assure the data sovereignty. Data consumer can access this data if they are allowed by the data provider simply by looking for the Digital Twin from the specific asset type or instance depending on the specific use case. This data will be retrieved using the EDC connector proxy which is protected by Policies and require data consumers to sign "odrl" contracts to maintain data sovereignty. +The technology concept consists of creating Signed Documents (Verification Statements) using the Verifiable Credentials 2.0 Technology. Which is in resume a JSON-LD structure standardized by the W3C Consortium for Web 3.0 for data trust and identity assurance. Using JSON Web Signatures (JWS) and a wallet component which is connected to Catena-X and identified by the unique company Business Partner Number (BPN), the data issuer and auditor can sign using their Ed25519 private key and the data consumer can access their public key by resolving the DID contained in the signature proof at the certified document credential. The certified data will be stored in the Data Provider infrastructure sub-model server, in order to assure the data sovereignty. Data consumer can access this data if they are allowed by the data provider simply by looking for the Digital Twin from the specific asset type or instance depending on the specific use case. This data will be retrieved using the EDC connector proxy which is protected by Policies and require data consumers to sign "odrl" contracts to maintain data sovereignty. In this way decentralize data exchange trust is assertive assured. Making possible and easing the transition from the Catena-X network product data exchange from Pre-Production to Production environments. Enabling better decision taking, saving possible human lives, boosting the circular economy use case, creating justification as form of digital proof for possible framework contracts trust breaks or frauds, assuring product quality and increasing employee safety when hazard materials/products are handled. @@ -381,7 +381,9 @@ The total certification process is the same as the attribute verification proces ![](./resources/processes/cdc-csc-workflow.svg) # Technical Integration - + +> [!WARNING] +> The technical integration design is still not available here! # References From e943d381a5683fcce831533ec0820bc7de6fc1a9 Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Mon, 13 May 2024 19:27:02 +0200 Subject: [PATCH 21/24] feat(dpp-verification): added verification methods --- dpp-verification/README.md | 31 +++++++++++++++++++ .../complete-verification-CSC-CDC.svg | 4 +++ .../complete-verification-CSC-CDC.svg.license | 13 ++++++++ .../technical/simple-verification-CDC.svg | 4 +++ .../simple-verification-CDC.svg.license | 13 ++++++++ .../technical/simple-verification-CSC.svg | 4 +++ .../simple-verification-CSC.svg.license | 13 ++++++++ 7 files changed, 82 insertions(+) create mode 100644 dpp-verification/resources/technical/complete-verification-CSC-CDC.svg create mode 100644 dpp-verification/resources/technical/complete-verification-CSC-CDC.svg.license create mode 100644 dpp-verification/resources/technical/simple-verification-CDC.svg create mode 100644 dpp-verification/resources/technical/simple-verification-CDC.svg.license create mode 100644 dpp-verification/resources/technical/simple-verification-CSC.svg create mode 100644 dpp-verification/resources/technical/simple-verification-CSC.svg.license diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 84a1ab0a5..3bca2c102 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -106,6 +106,11 @@ This concept has been proved to be of high interest from the Certification and V - [Attribute Certification Process](#attribute-certification-process) - [Self-Testify Certification Process](#self-testify-certification-process) - [Total Certification Process](#total-certification-process) +- [Certification and Verification Methods](#certification-and-verification-methods) + - [Certified Snapshot Credential](#certified-snapshot-credential) + - [Certified Data Credential](#certified-data-credential) + - [Complete Data Certification Verification](#complete-data-certification-verification) +- [Technical Specification](#technical-specification) - [Technical Integration](#technical-integration) - [References](#references) - [Special Thanks](#special-thanks) @@ -380,6 +385,32 @@ The total certification process is the same as the attribute verification proces ![](./resources/processes/cdc-csc-workflow.svg) +# Certification and Verification Methods + +## Certified Snapshot Credential + +By using `hashes` and indicating which attributes were verified we are able to use `Selective Disclosure` to indicate which values were present in the original data audited. In this way the data gets not duplicated and the verification using the data retrieved from the data provider is still possible. + +![CSC Simple Verification Method](./resources/technical/simple-verification-CSC.svg) + +## Certified Data Credential + +In this case just the data provider would sign its own digital product pass credential and generating the corresponding Certified Data Credential with the proof of the content issued in a specific datetime. + +![CDC Simple Verification Method](./resources/technical/simple-verification-CDC.svg) + +## Complete Data Certification Verification + +The complete verification comparation would be happen when both Certified Data Credential (CDC) and one or more the Certified Snapshot Credentials (CSC) are available. The different partial credential (CSCs) you be compared against the CDC credential hashes. This allows the application to know which attributes were certified by the data-auditor and with each value. + +![CDC + CSC Complete Verification Method](./resources/technical/complete-verification-CSC-CDC.svg) + + +# Technical Specification + + + + # Technical Integration > [!WARNING] diff --git a/dpp-verification/resources/technical/complete-verification-CSC-CDC.svg b/dpp-verification/resources/technical/complete-verification-CSC-CDC.svg new file mode 100644 index 000000000..eee86c594 --- /dev/null +++ b/dpp-verification/resources/technical/complete-verification-CSC-CDC.svg @@ -0,0 +1,4 @@ + + + +
CERTIFIED DATA CREDENTIAL (CDC)
CERTIFIED DATA CREDENTIAL (CDC)
v2.0
v2.0
DID + checksum: 688787d8ff144c502c7f5cffaafe2cc
DID + checksum: 688787d8ff144c502c7f5cffaafe2cc
checksum: 400c3db8641df81e71515af75a88b
checksum: 400c3db8641df81e71515af75a88b
Hashed
Hashed
Digital Product Pass
Complete Aspect Model
Digital Product Pass...
name: "Ion Battery T7A8"
name: "Ion Battery T7A8"
voltage: 300
voltage: 300
product carbon:
product carbon:
value: 85
value: 85
method: ISO 14067:2018
method: ISO 14067:2018
height: 54
height: 54
weight: 708
weight: 708
...
...
Identification, Context and Verification Methods
Identification, Context and Verification Methods
Hash
Hash
Hash
Hash
Hash
Hash
VC
VC
CERTIFIED SNAPSHOT CREDENTIAL (CSC)
CERTIFIED SNAPSHOT CREDENTIAL (CSC)
DID + checksum: 400c3db8641df81e71515af75a88b
DID + checksum: 400c3db8641df81e71515af75a88b
checksum: e587ecfe1554a97c1391ab7e2398a
checksum: e587ecfe1554a97c1391ab7e2398a
Digital Product Pass
Partial Aspect Model
Digital Product Pass...
voltage: "983bd614bb5afece"
voltage: "983bd614bb5afece"
product carbon:
product carbon:
value: "b4944c6ff08dc6f43"
value: "b4944c6ff08dc6f43"
method: "571ad311b1d663d"
method: "571ad311b1d663d"
weight: "bd94717d91260895"
weight: "bd94717d91260895"
...
...
Identification, Context and Verification Methods
Identification, Context and Verification Methods
VC
VC
CERTIFIED DATA CREDENTIAL (CDC)
CERTIFIED DATA CREDENTIAL (CDC)
v1.0
v1.0
Digital Product Pass
Complete
Aspect Model
Digital Product Pass...
VC
VC
1706be6c293444756 
1706be6c293444756 
Hashed
Hashed
bd94717d91260895
bd94717d91260895
571ad311b1d663d
571ad311b1d663d
571ad311b1d663d
571ad311b1d663d
b4944c6ff08dc6f43
b4944c6ff08dc6f43
b4944c6ff08dc6f43
b4944c6ff08dc6f43
983bd614bb5afece
983bd614bb5afece
983bd614bb5afece
983bd614bb5afece
Hash
Hash
SIGNED BY DATA PROVIDER / PASSPORT ISSUER
COMPANY
SIGNED BY DATA PROVIDER / PASSPORT ISSUER...
SIGNED BY EXTERNAL / INTERNAL AUDITOR
COMPANY
SIGNED BY EXTERNAL / INTERNAL AUDITOR...
Linked and Hashed
Linked and Hashed
CERTIFIED DATA CREDENTIAL (CDC)
CERTIFIED DATA CREDENTIAL (CDC)
v2.0
v2.0
Digital Product Pass
Complete
Aspect Model
Digital Product Pass...
VC
VC
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/technical/complete-verification-CSC-CDC.svg.license b/dpp-verification/resources/technical/complete-verification-CSC-CDC.svg.license new file mode 100644 index 000000000..4bd508f93 --- /dev/null +++ b/dpp-verification/resources/technical/complete-verification-CSC-CDC.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file diff --git a/dpp-verification/resources/technical/simple-verification-CDC.svg b/dpp-verification/resources/technical/simple-verification-CDC.svg new file mode 100644 index 000000000..4dec99a47 --- /dev/null +++ b/dpp-verification/resources/technical/simple-verification-CDC.svg @@ -0,0 +1,4 @@ + + + +
CERTIFIED DATA CREDENTIAL (CDC)
CERTIFIED DATA CREDENTIAL (CDC)
v2.0
v2.0
DID + checksum: 688787d8ff144c502c7f5cffaafe2cc
DID + checksum: 688787d8ff144c502c7f5cffaafe2cc
checksum: 400c3db8641df81e71515af75a88b
checksum: 400c3db8641df81e71515af75a88b
Hashed
Hashed
Digital Product Pass
Complete Aspect Model
Digital Product Pass...
name: "Ion Battery T7A8"
name: "Ion Battery T7A8"
voltage: 300
voltage: 300
product carbon:
product carbon:
value: 85
value: 85
method: ISO 14067:2018
method: ISO 14067:2018
height: 54
height: 54
weight: 708
weight: 708
...
...
Identification, Context and Verification Methods
Identification, Context and Verification Methods
VC
VC
CERTIFIED DATA CREDENTIAL (CDC)
CERTIFIED DATA CREDENTIAL (CDC)
v1.0
v1.0
Digital Product Pass
Complete
Aspect Model
Digital Product Pass...
VC
VC
SIGNED BY DATA PROVIDER / PASSPORT ISSUER
COMPANY
SIGNED BY DATA PROVIDER / PASSPORT ISSUER...
Linked and Hashed
Linked and Hashed
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/technical/simple-verification-CDC.svg.license b/dpp-verification/resources/technical/simple-verification-CDC.svg.license new file mode 100644 index 000000000..4bd508f93 --- /dev/null +++ b/dpp-verification/resources/technical/simple-verification-CDC.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file diff --git a/dpp-verification/resources/technical/simple-verification-CSC.svg b/dpp-verification/resources/technical/simple-verification-CSC.svg new file mode 100644 index 000000000..239c8ef64 --- /dev/null +++ b/dpp-verification/resources/technical/simple-verification-CSC.svg @@ -0,0 +1,4 @@ + + + +
CERTIFIED SNAPSHOT CREDENTIAL (CSC)
CERTIFIED SNAPSHOT CREDENTIAL (CSC)
DID + checksum: 400c3db8641df81e71515af75a88b
DID + checksum: 400c3db8641df81e71515af75a88b
checksum: e587ecfe1554a97c1391ab7e2398a
checksum: e587ecfe1554a97c1391ab7e2398a
Digital Product Pass
Partial Aspect Model
Digital Product Pass...
voltage: "983bd614bb5afece"
voltage: "983bd614bb5afece"
product carbon:
product carbon:
value: "b4944c6ff08dc6f43"
value: "b4944c6ff08dc6f43"
method: "571ad311b1d663d"
method: "571ad311b1d663d"
weight: "bd94717d91260895"
weight: "bd94717d91260895"
...
...
Identification, Context and Verification Methods
Identification, Context and Verification Methods
VC
VC
1706be6c293444756 
1706be6c293444756 
Hashed
Hashed
bd94717d91260895
bd94717d91260895
571ad311b1d663d
571ad311b1d663d
571ad311b1d663d
571ad311b1d663d
b4944c6ff08dc6f43
b4944c6ff08dc6f43
b4944c6ff08dc6f43
b4944c6ff08dc6f43
983bd614bb5afece
983bd614bb5afece
983bd614bb5afece
983bd614bb5afece
Hash
Hash
SIGNED BY EXTERNAL / INTERNAL AUDITOR
COMPANY
SIGNED BY EXTERNAL / INTERNAL AUDITOR...
Digital Product Pass
Complete Aspect Model
Digital Product Pass...
name: "Ion Battery T7A8"
name: "Ion Battery T7A8"
voltage: 300
voltage: 300
product carbon:
product carbon:
value: 85
value: 85
method: ISO 14067:2018
method: ISO 14067:2018
height: 54
height: 54
weight: 708
weight: 708
...
...
Hash
Hash
Hash
Hash
Hash
Hash
Digital Product Pass
Complete
Aspect Model
Digital Product Pass...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/technical/simple-verification-CSC.svg.license b/dpp-verification/resources/technical/simple-verification-CSC.svg.license new file mode 100644 index 000000000..4bd508f93 --- /dev/null +++ b/dpp-verification/resources/technical/simple-verification-CSC.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file From c5f7ea595237c5dd8f2f20558ee9ed207bb62362 Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Mon, 13 May 2024 19:32:28 +0200 Subject: [PATCH 22/24] chore(dpp-verification): added interfaces design --- dpp-verification/README.md | 9 ++++++++- dpp-verification/resources/technical/interfaces.svg | 4 ++++ .../resources/technical/interfaces.svg.license | 13 +++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 dpp-verification/resources/technical/interfaces.svg create mode 100644 dpp-verification/resources/technical/interfaces.svg.license diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 3bca2c102..ba0e72c7e 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -112,6 +112,7 @@ This concept has been proved to be of high interest from the Certification and V - [Complete Data Certification Verification](#complete-data-certification-verification) - [Technical Specification](#technical-specification) - [Technical Integration](#technical-integration) + - [Interfaces](#interfaces) - [References](#references) - [Special Thanks](#special-thanks) - [Glossary](#glossary) @@ -414,7 +415,13 @@ The complete verification comparation would be happen when both Certified Data C # Technical Integration > [!WARNING] -> The technical integration design is still not available here! +> The complete technical integration design is still not available here! + +## Interfaces + +The digital product pass application would act in the dpp-verification concept as the "Verification System" which is able to communicate with different systems, behind or not behind a EDC connector. Data would be exchange using the EDC however components like the Wallet could be accessed using the "DID Web" method, or the Semantic Hub using the central interface provided by the operator of the network. + +![intefaces](./resources/technical/interfaces.svg) # References diff --git a/dpp-verification/resources/technical/interfaces.svg b/dpp-verification/resources/technical/interfaces.svg new file mode 100644 index 000000000..ed0123335 --- /dev/null +++ b/dpp-verification/resources/technical/interfaces.svg @@ -0,0 +1,4 @@ + + + +
«Verification System»
Digital Product Pass
«Verification System...
Semantic Hub
Semantic Hub
Wallet
Wallet
EDC
EDC
Digital Twin Registry
Digital Twin Registry
Data Service
Data Service
Sign Credentials
and Get Public Keys
Sign Credentials...
Get Semantic
Models and
Schemas
Get Semantic...
Find Contract Offers
and Policies in Catalog.
Negotiate and Transfer Data
Find Contract Offers...
 Get Instance and Type
Digital Twins and 
EDC Asset Endpoints
Get Instance and Type...
Get Data and Verification
Aspects
Get Data and Verification...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/technical/interfaces.svg.license b/dpp-verification/resources/technical/interfaces.svg.license new file mode 100644 index 000000000..4bd508f93 --- /dev/null +++ b/dpp-verification/resources/technical/interfaces.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file From 0c848e43c80a154c2f171015a9fa2d647170fc5d Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Mon, 13 May 2024 20:04:18 +0200 Subject: [PATCH 23/24] feat(dpp-verification): added technical integration design, and verification processes --- dpp-verification/README.md | 64 +++++++++++++++++-- .../processes/verification-process-cdc.svg | 4 ++ .../verification-process-cdc.svg.license | 13 ++++ .../processes/verification-process-csc.svg | 4 ++ .../verification-process-csc.svg.license | 13 ++++ ...-integration-flow-csc+cdc-data-auditor.svg | 4 ++ ...tion-flow-csc+cdc-data-auditor.svg.license | 13 ++++ .../technical-integration-flow-csc+cdc.svg | 4 ++ ...nical-integration-flow-csc+cdc.svg.license | 13 ++++ ...ical-integration-flow-csc-data-auditor.svg | 4 ++ ...egration-flow-csc-data-auditor.svg.license | 13 ++++ .../technical-integration-flow-csc.svg | 4 ++ ...technical-integration-flow-csc.svg.license | 13 ++++ 13 files changed, 161 insertions(+), 5 deletions(-) create mode 100644 dpp-verification/resources/processes/verification-process-cdc.svg create mode 100644 dpp-verification/resources/processes/verification-process-cdc.svg.license create mode 100644 dpp-verification/resources/processes/verification-process-csc.svg create mode 100644 dpp-verification/resources/processes/verification-process-csc.svg.license create mode 100644 dpp-verification/resources/technical/technical-integration-flow-csc+cdc-data-auditor.svg create mode 100644 dpp-verification/resources/technical/technical-integration-flow-csc+cdc-data-auditor.svg.license create mode 100644 dpp-verification/resources/technical/technical-integration-flow-csc+cdc.svg create mode 100644 dpp-verification/resources/technical/technical-integration-flow-csc+cdc.svg.license create mode 100644 dpp-verification/resources/technical/technical-integration-flow-csc-data-auditor.svg create mode 100644 dpp-verification/resources/technical/technical-integration-flow-csc-data-auditor.svg.license create mode 100644 dpp-verification/resources/technical/technical-integration-flow-csc.svg create mode 100644 dpp-verification/resources/technical/technical-integration-flow-csc.svg.license diff --git a/dpp-verification/README.md b/dpp-verification/README.md index ba0e72c7e..682cfd59e 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -110,9 +110,18 @@ This concept has been proved to be of high interest from the Certification and V - [Certified Snapshot Credential](#certified-snapshot-credential) - [Certified Data Credential](#certified-data-credential) - [Complete Data Certification Verification](#complete-data-certification-verification) -- [Technical Specification](#technical-specification) -- [Technical Integration](#technical-integration) +- [Verification Processes](#verification-processes) + - [Flow Diagrams](#flow-diagrams) + - [CDC Technical Verification Flow](#cdc-technical-verification-flow) + - [CSC Technical Verification Flow](#csc-technical-verification-flow) +- [Technical Integration Design](#technical-integration-design) - [Interfaces](#interfaces) + - [Certification Sequence Diagrams](#certification-sequence-diagrams) + - [CSC Certification Sequence Diagram](#csc-certification-sequence-diagram) + - [CDC + CSC Certification Sequence Diagram](#cdc--csc-certification-sequence-diagram) + - [Verification Sequence Diagrams](#verification-sequence-diagrams) + - [CSC Verification Sequence Diagram](#csc-verification-sequence-diagram) + - [CDC + CSC Verification Sequence Diagram](#cdc--csc-verification-sequence-diagram) - [References](#references) - [Special Thanks](#special-thanks) - [Glossary](#glossary) @@ -407,13 +416,26 @@ The complete verification comparation would be happen when both Certified Data C ![CDC + CSC Complete Verification Method](./resources/technical/complete-verification-CSC-CDC.svg) -# Technical Specification +# Verification Processes +## Flow Diagrams +In order for the Certified Data Credential and Certified Snapshot Credential to be retrieve, the consumer application **MUST** be able to access the digital twin in the data auditor registry. +### CDC Technical Verification Flow -# Technical Integration - +By simply accessing the digital twin the data will be available as a submodel, the same way as a normal digital product pass serialized payload is available: + +![Verification Flow CDC](./resources/processes/verification-process-cdc.svg) + +### CSC Technical Verification Flow + +For the partial credential the data will be available in a "Verification" aspect called `Attribute Certification Record` (ACR) which contains the different attribute verification for a particular submodel in a digital twin. + +![Verification Flow CSC](./resources/processes/verification-process-csc.svg) + +# Technical Integration Design + > [!WARNING] > The complete technical integration design is still not available here! @@ -423,6 +445,38 @@ The digital product pass application would act in the dpp-verification concept a ![intefaces](./resources/technical/interfaces.svg) +## Certification Sequence Diagrams + +> [!WARNING] +> Some details may be missing or incorrect, since that is the first implementation concept for the certification and verification. The concept is still being elaborated and will be determined in the new release with the actual implementation! + + +### CSC Certification Sequence Diagram + +In this sequence diagram we can see how a data auditor retrieved the data as a normal Digital Product Pass Application. It will select then the different attributes and then sign his certificate against its own `decentral wallet`. After he will send it to the data provider. + +![CSC Certification](./resources/technical/technical-integration-flow-csc-data-auditor.svg) + +### CDC + CSC Certification Sequence Diagram + +In this sequence diagram we have the same as the first one, however the data auditor can also indicate which data needs to be updated in the original data for being `compliant`. Therefore the data provider can also update its data in the original data and verify it once again. + +![CSC + CDC Certification](./resources/technical/technical-integration-flow-csc+cdc-data-auditor.svg) + +## Verification Sequence Diagrams + +### CSC Verification Sequence Diagram + +In this verification sequence diagram we can observe the digital product pass application will retrieve the data first and then will request for any verification data available. + +![CSC Verification](./resources/technical/technical-integration-flow-csc.svg) + +### CDC + CSC Verification Sequence Diagram + +In this verification sequence diagram the complete verification is found. The CDC credential is retrieved in the first step and checked if it verified against a wallet. And then the data is displayed, after that the user requests more verification and gets it from the data provider if allowed. + +![CSC + CDC Verification](./resources/technical/technical-integration-flow-csc+cdc.svg) + # References The following references were used as inspiration for understanding more how product credentials are done in the market. Is also included references to components in Tractus-X that were used to understand on how the different components behave in the network. diff --git a/dpp-verification/resources/processes/verification-process-cdc.svg b/dpp-verification/resources/processes/verification-process-cdc.svg new file mode 100644 index 000000000..9c77b18d5 --- /dev/null +++ b/dpp-verification/resources/processes/verification-process-cdc.svg @@ -0,0 +1,4 @@ + + + +
Find Digital Product Pass Submodel
by "SemanticId"
Find Digital Product Pass Su...
Is subprotocolBodyType
"application/vc+ld+json"?
Is subprotocolBodyType...
Get Digital Twin
Get Digital Twin
Show Passport as "Unverified" Status
Show Passport as "Unverified...
No
No
Request Public Key and
Verify Issuer Signature
Request Public Key and...
Is valid or possible
to verify?
Is valid or possible...
Display "Error"
in Verification Status
Display "Error"...
No
No
Show Passport as "Verified"
Status
Show Passport as "Verified"...
Yes
Yes
Yes
Yes
This condition indicates
if the data is contained inside a
CDC Signed Document
This condition indicates...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/processes/verification-process-cdc.svg.license b/dpp-verification/resources/processes/verification-process-cdc.svg.license new file mode 100644 index 000000000..4bd508f93 --- /dev/null +++ b/dpp-verification/resources/processes/verification-process-cdc.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file diff --git a/dpp-verification/resources/processes/verification-process-csc.svg b/dpp-verification/resources/processes/verification-process-csc.svg new file mode 100644 index 000000000..1a3f508b6 --- /dev/null +++ b/dpp-verification/resources/processes/verification-process-csc.svg @@ -0,0 +1,4 @@ + + + +
Get Digital Twin
Get Digital Twin
Every aspect model in CX needs to have a
standardized specific idShort
in order to be placed in the Digital Twin as a Submodel.
 The idShortPrefix will be taken from the
Submodel we want to have the attribute verification aspect.
Example: digitalProductPassVerification 
or
batteryPassVerification
Every aspect model in CX needs to have a...
<idShortPrefix>
<idShortPrefix>
Verification
Verification
¿Exists idShort?:
¿Exists idShort?:
Get Id Short from aspect to have the Attribute Verification Aspect Requested
Get Id Short from aspect to...
Negotiate and Transfer Payload from EDC Endpoint
Negotiate and Transfer Paylo...
Display "No Attribute Verification Available" Status
Display "No Attribute Verifi...
Is negotiation and transfer
successful?
Is negotiation and transfer...
Display "Error" indicating that the negotiation or transfer failed
Display "Error" indicating t...
Extract CSC Credentials
and Iterate over Certified Attribute Credentials
Extract CSC Credentials...
Are signatures valid or
possible to verify?
Are signatures valid or...
Present Complete Verification
Result at Attribute Level
Present Complete Verification...
When iterating over the credentials
maybe not all the signatures will be possible
to verify, therefore there needs to be indicated
which attributes were verified and which ones
caused an error or were not possible to verify
When iterating over the credentials...
Present Partial Verification
Result at Attribute Level with Flaws and Errors
Present Partial Verification...
Yes
Yes
No
No
Yes
Yes
No
No
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/processes/verification-process-csc.svg.license b/dpp-verification/resources/processes/verification-process-csc.svg.license new file mode 100644 index 000000000..4bd508f93 --- /dev/null +++ b/dpp-verification/resources/processes/verification-process-csc.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file diff --git a/dpp-verification/resources/technical/technical-integration-flow-csc+cdc-data-auditor.svg b/dpp-verification/resources/technical/technical-integration-flow-csc+cdc-data-auditor.svg new file mode 100644 index 000000000..49c9fc227 --- /dev/null +++ b/dpp-verification/resources/technical/technical-integration-flow-csc+cdc-data-auditor.svg @@ -0,0 +1,4 @@ + + + +
EDC CONSUMER
EDC CONSUMER
Description
Aspects from Verification
Aspects from Verificati...
Action in Backend File System
Action in Backend File Syst...
Execution Order
Execution Order
Parallel Verification
Process in Backend
Parallel Verification...
EDC Data Plane Proxy
EDC Data Plane Proxy
Action in Frontend
Action in Frontend
EDC PROVIDER
EDC PROVIDER
DTR
DTR
SUBMODEL
SERVER
SUBMODEL...
DECENTAL
WALLET
DECENTAL...
EDC CONSUMER
EDC CONSUMER
DPP CONSUMER
BACKEND
DPP CONSUMER...
DPP BACKEND
DPP BACKEND
EDC PROVIDER
EDC PROVIDER
DTR
DTR
SUBMODEL
SERVER
SUBMODEL...
DECENTAL
WALLET
DECENTAL...
DPP CONSUMER
FRONTEND
DPP CONSUMER...
DPP FRONTEND
DPP FRONTEND
Auditor
Audit...
Auditor
Audit...
DPP 
PROVIDER
BACKEND
DPP...
DPP 
PROVIDER
BACKEND
DPP...
Request Digital Twin
Request Digital Twin
Digital Twin + Submodels
Digital Twin + Submodels
Request Transfer for Asset Data
Request Transfer for Asset Data
Negotiation Completed
Negotiation Completed
EDR Token (Data Plane Token)
EDR Token (Data Plane Token)
Transfer Completed
Transfer Completed
Call Digital Twin HREF Url with EDR Token
Call Digital Twin HREF Url with EDR Token
Data/Passport Aspect in Verifiable Credential
Data/Passport Aspect in Verifiable Credential
Request Negotiation of Asset
Request Negotiation of Asset
Agreement ID
Agreement ID
Transfer Completed
Transfer Completed
Select audited/verified
 attributes
Select audited/verified...
Signed CSC Verifiable Credential
Signed CSC Verifiable Credential
Create CSC and CDC Verifiable
Credentials

Create CSC and CDC Verifiable...
Signed CDC Verifiable Credential
Signed CDC Verifiable Credential
Audited Attributes + Updated Passport
Audited Attributes + Updated Passport
Edit and Update Incorrect
Passport Values
Edit and Update Incorrect...
Submit Passport and
Audited Values
Submit Passport and...
RESUMED DATA RETRIEVAL FLOW
RESUMED DATA RETRIEVAL FLOW
Passport
Passport
Encrypt and Store Passport + Set Status VERIFYING
Encrypt and Store Passport + Set Status VERIFYING
If available, decrypt, retrieve then
delete passport

If available, decrypt, retrieve then...
Visualize Passport with
Audit and Verify Option
Visualize Passport with...
processId + contractId + Sign Token
processId + contractId + Sign Token
Get Status is equals
 "COMPLETED" and
"RECEIVED" and "VERIFIED"

Get Status is equals...
DISCOVERY PHASE + DIGITAL TWIN REGISTRY SEARCH PHASE
DISCOVERY PHASE + DIGITAL TWIN REGISTRY SEARCH PHASE
Search for Passport
CX:354:NX-587
Search for Passport...
Start Negotiation
Start Negotiation
1º - Validate the Proof with the Passport Issuer public key
2º - Update status to VERIFIED
1º - Validate the Proof with the Passport Issuer public ke...
DID Document with Public Key of Passport Issuer
DID Document with Public Key of Passport Issuer
Decode DID from Passport Issuer and Request Public Key
Decode DID from Passport Issuer and Request Public Key
Check if user has audit
permissions

Check if user has audit...
Select Audit/Verify Option
Select Audit/Verify Option
Search for Provider Digital Product Pass
Search for Provider Digital Product Pass
Search for DPP in Data Provider EDC
Search for DPP in Data Provider EDC
Catalog with DPP Contract
Catalog with DPP Contract
Negotiate DPP Asset
Negotiate DPP Asset
Contract Agreement Id
Contract Agreement Id
Complete Negotiation
Complete Negotiation
Initialize Negotiation
Initialize Negotiation
Catalog Response
Catalog Response
Audition/Verification Available
Audition/Verification Available
Show Audit/Verification/Edit
Icons and Options
Show Audit/Verification/Edit...
SEARCH FOR PROVIDER
DIGITAL PRODUCT PASS
SEARCH FOR PROVIDER...
Query Catalog for Asset Type:
 
data.core.digitalProductPass
Query Catalog for Asset Type:...
Audition/Verification Not Available
Audition/Verification Not Available
Show Verification/Audition
Unavailable
Show Verification/Audition...
AUDIT | VERIFICATION | EDIT
PROCESS
AUDIT | VERIFICATION | EDIT...
EDR Token (Data Plane Token)
EDR Token (Data Plane Token)
Transfer Completed
Transfer Completed
Transfer Completed
Transfer Completed
Display Success Banner
Display Success Banner
Audition/Verification Completed
Audition/Verification Completed
Create Approval Request
Create Approval Request
Create/Sign CSC Verifiable Credential
Create/Sign CSC Verifiable Credential
Create/Sign CDC Verifiable Credential
Create/Sign CDC Verifiable Credential
Text
Text
Store CSC with DID
Store CSC with DID
Update Digital Twin with
CDC Submodel and Verification Flag
Update Digital Twin with...
Update Confirmation
Update Confirmation
Update Done
Update Done
Update Confirmation
Update Confirmation
Update Current CDC
Update Current CDC
Update Confirmation
Update Confirmation
Create/Sign CDC Verifiable Credential
Create/Sign CDC Verifiable Credential
Signed CDC Verifiable Credential
Signed CDC Verifiable Credential
Display
Confirmation
Display...
Confirm Sucess Update Request
Confirm Sucess Update Request
Data Provider
Data...
DPP 
PROVIDER
FRONTEND
DPP...
DPP 
PROVIDER
FRONTEND
DPP...
Update Approval
Update Approval
Display Approval
Request
Display Approval...
Send CDC and CSC in Body as JWT Token to DPP Backend using EDR Token
Send CDC and CSC in Body as JWT Token to DPP Backend using EDR Token
Present Audited
CSC + CDC Values
Present Audited...
Data Provider
Data...
Approve
Modification
Approve...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/technical/technical-integration-flow-csc+cdc-data-auditor.svg.license b/dpp-verification/resources/technical/technical-integration-flow-csc+cdc-data-auditor.svg.license new file mode 100644 index 000000000..4bd508f93 --- /dev/null +++ b/dpp-verification/resources/technical/technical-integration-flow-csc+cdc-data-auditor.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file diff --git a/dpp-verification/resources/technical/technical-integration-flow-csc+cdc.svg b/dpp-verification/resources/technical/technical-integration-flow-csc+cdc.svg new file mode 100644 index 000000000..953fd4fd4 --- /dev/null +++ b/dpp-verification/resources/technical/technical-integration-flow-csc+cdc.svg @@ -0,0 +1,4 @@ + + + +
EDC CONSUMER
EDC CONSUMER
Description
Aspects from Verification
Aspects from Verificati...
Action in Backend File System
Action in Backend File Syst...
Execution Order
Execution Order
Parallel Verification
Process in Backend
Parallel Verification...
EDC Data Plane Proxy
EDC Data Plane Proxy
Action in Frontend
Action in Frontend
EDC PROVIDER
EDC PROVIDER
DTR
DTR
SUBMODEL
SERVER
SUBMODEL...
WALLET
WALLET
EDC CONSUMER
EDC CONSUMER
DPP BACKEND
DPP BACKEND
DPP BACKEND
DPP BACKEND
EDC PROVIDER
EDC PROVIDER
DTR
DTR
SUBMODEL
SERVER
SUBMODEL...
WALLET
WALLET
Request Digital Twin
Request Digital Twin
Digital Twin + Submodels and Verification Flag
Digital Twin + Submodels and Verification Flag
Request Transfer for Asset Data
Request Transfer for Asset Data
Negotiation Completed
Negotiation Completed
EDR Token (Data Plane Token)
EDR Token (Data Plane Token)
Transfer Completed
Transfer Completed
Call Digital Twin HREF Url with EDR Token
Call Digital Twin HREF Url with EDR Token
Data/Passport Aspect in Verifiable Credential
Data/Passport Aspect in Verifiable Credential
SEMANTIC HUB
SEMANTIC HUB
SEMANTIC HUB
SEMANTIC HUB
DPP FRONTEND
DPP FRONTEND
DPP FRONTEND
DPP FRONTEND
User
User
User
User
RESUMED DATA RETRIEVAL FLOW
RESUMED DATA RETRIEVAL FLOW
Encrypt and Store Passport + Set Status VERIFYING
Encrypt and Store Passport + Set Status VERIFYING
If available, decrypt, retrieve then
delete passport

If available, decrypt, retrieve then...
Visualize Passport and
Verification Option
Visualize Passport and...
processId + contractId + Sign Token
processId + contractId + Sign Token
Get Status is equals
 "COMPLETED" and
"RECEIVED" and "VERIFIED"

Get Status is equals...
Passport + Verification Token
Passport + Verification Token
Search for Passport
CX:354:NX-587
Search for Passport...
DISCOVERY PHASE + DIGITAL TWIN REGISTRY SEARCH PHASE
DISCOVERY PHASE + DIGITAL TWIN REGISTRY SEARCH PHASE
Start Negotiation
Start Negotiation
1º - Validate the Proof with the Passport Issuer public key
2º - Update status to VERIFIED
1º - Validate the Proof with the Passport Issuer public ke...
DID Document with Public Key of Passport Issuer
DID Document with Public Key of Passport Issuer
Decode DID from Passport Issuer and Request Public Key
Decode DID from Passport Issuer and Request Public Key
DATA PLAUSIBILITY +
 SEMANTICS CHECK
DATA PLAUSIBILITY +...
VERIFICATION PROCESS
VERIFICATION PROCESS

Is the Verification Token available?
Is the Verification Token available?
Store Passport Data Encrypted with the Verification Token and Trigger Verification Process
Store Passport Data Encrypted with the Verification Token and Trigger Verification Process
1º - Store the model semantics in the cache, decrypt passport and check passport data semantics + data restrictions
2º - Update the verification status  
1º - Store the model semantics in the cache, decrypt passport and check passport data semantics + data rest...
Check if the model semantics was already retrieved
and is available in the cache
Check if the model semantics was already retrieved...
Show Verification Status
Show Verification Status
Retrieve Current Verification Status
Retrieve Current Verification Status
Show Final Verification Result
Show Final Verification Result
End of Verification Process 
Retrieve Final Status with Flaws
End of Verification Process...
Get Verification Status with
Verification Token
Get Verification Status with...
Verification Final Status
Verification Final Status
Verification Process Started
Verification Process Started
Verification Token + Passport Data
Verification Token + Passport Data
Request Verification
Request Verification
CERTIFIED DATA VERIFICATION + DATA INTEGRITY CHECK
CERTIFIED DATA VERIFICATION + DATA INTEGRITY CHECK
1º - Validate the Proof with the issuer public key
2º - Update the verification status  
1º - Validate the Proof with the issuer public ke...
DID Document with Public Key of Issuer
DID Document with Public Key of Issuer
Decode DID from Issuer and Request Public Key
Decode DID from Issuer and Request Public Key
1º - Hash passport attributes and compare with Verifiable Credential Hashes
2º - Update the verification status  
1º - Hash passport attributes and compare with Verifiable Credential Hashes...
Request Transfer for Asset Data
Request Transfer for Asset Data
EDR Token (Data Plane Token)
EDR Token (Data Plane Token)
Call for Control Plane DID of the Verifiable Credential
Call for Control Plane DID of the Verifiable Credential
Retrieve Certified Data Snapshot in a Verifiable Credential
Retrieve Certified Data Snapshot in a Verifiable Credential
Transfer Completed
Transfer Completed
Transfer Completed
Transfer Completed
Get Verification Status with
Verification Token
Get Verification Status with...
Verification Status
Verification Status
Request Negotiation of Asset
Request Negotiation of Asset
Agreement ID
Agreement ID
Transfer Completed
Transfer Completed
NORMAL DATA RETRIEVAL FLOW
NORMAL DATA RETRIEVAL FLOW
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/technical/technical-integration-flow-csc+cdc.svg.license b/dpp-verification/resources/technical/technical-integration-flow-csc+cdc.svg.license new file mode 100644 index 000000000..4bd508f93 --- /dev/null +++ b/dpp-verification/resources/technical/technical-integration-flow-csc+cdc.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file diff --git a/dpp-verification/resources/technical/technical-integration-flow-csc-data-auditor.svg b/dpp-verification/resources/technical/technical-integration-flow-csc-data-auditor.svg new file mode 100644 index 000000000..664ef96c3 --- /dev/null +++ b/dpp-verification/resources/technical/technical-integration-flow-csc-data-auditor.svg @@ -0,0 +1,4 @@ + + + +
EDC CONSUMER
EDC CONSUMER
Description
Aspects from Verification
Aspects from Verificati...
Action in Backend File System
Action in Backend File Syst...
Execution Order
Execution Order
Parallel Verification
Process in Backend
Parallel Verification...
EDC Data Plane Proxy
EDC Data Plane Proxy
Action in Frontend
Action in Frontend
EDC PROVIDER
EDC PROVIDER
DTR
DTR
SUBMODEL
SERVER
SUBMODEL...
DECENTRAL
WALLET
DECENTRAL...
EDC CONSUMER
EDC CONSUMER
DPP CONSUMER
BACKEND
DPP CONSUMER...
DPP BACKEND
DPP BACKEND
EDC PROVIDER
EDC PROVIDER
DTR
DTR
SUBMODEL
SERVER
SUBMODEL...
DECENTRAL
WALLET
DECENTRAL...
DPP CONSUMER
FRONTEND
DPP CONSUMER...
DPP FRONTEND
DPP FRONTEND
Auditor
Audit...
Auditor
Audit...
DPP 
PROVIDER
BACKEND
DPP...
DPP 
PROVIDER
BACKEND
DPP...
Request Digital Twin
Request Digital Twin
Digital Twin + Submodels
Digital Twin + Submodels
Request Transfer for Asset Data
Request Transfer for Asset Data
Negotiation Completed
Negotiation Completed
EDR Token (Data Plane Token)
EDR Token (Data Plane Token)
Transfer Completed
Transfer Completed
Call Digital Twin HREF Url with EDR Token
Call Digital Twin HREF Url with EDR Token
Data/Passport Aspect in Verifiable Credential
Data/Passport Aspect in Verifiable Credential
Request Negotiation of Asset
Request Negotiation of Asset
Agreement ID
Agreement ID
Transfer Completed
Transfer Completed
Select audited/verified
 attributes
Select audited/verified...
Create CSC Verifiable
Credential

Create CSC Verifiable...
Audited Attributes + Updated Passport
Audited Attributes + Updated Passport
Submit Passport and
Audited Values
Submit Passport and...
RESUMED DATA RETRIEVAL FLOW
RESUMED DATA RETRIEVAL FLOW
Passport
Passport
Encrypt and Store Passport + Set Status VERIFYING
Encrypt and Store Passport + Set Status VERIFYING
If available, decrypt, retrieve then
delete passport

If available, decrypt, retrieve then...
Visualize Passport with
Audit and Verify Option
Visualize Passport with...
processId + contractId + Sign Token
processId + contractId + Sign Token
Get Status is equals
 "COMPLETED" and
"RECEIVED" and "VERIFIED"

Get Status is equals...
DISCOVERY PHASE + DIGITAL TWIN REGISTRY SEARCH PHASE
DISCOVERY PHASE + DIGITAL TWIN REGISTRY SEARCH PHASE
Search for Passport
CX:354:NX-587
Search for Passport...
Start Negotiation
Start Negotiation
1º - Validate the Proof with the Passport Issuer public key
2º - Update status to VERIFIED
1º - Validate the Proof with the Passport Issuer public ke...
DID Document with Public Key of Passport Issuer
DID Document with Public Key of Passport Issuer
Decode DID from Passport Issuer and Request Public Key
Decode DID from Passport Issuer and Request Public Key
Check if user has audit
permissions

Check if user has audit...
Select Audit/Verify Option
Select Audit/Verify Option
Search for Provider Digital Product Pass
Search for Provider Digital Product Pass
Search for DPP in Data Provider EDC
Search for DPP in Data Provider EDC
Catalog with DPP Contract
Catalog with DPP Contract
Negotiate DPP Asset
Negotiate DPP Asset
Contract Agreement Id
Contract Agreement Id
Complete Negotiation
Complete Negotiation
Initialize Negotiation
Initialize Negotiation
Catalog Response
Catalog Response
Audition/Verification Available
Audition/Verification Available
Show Audit/Verification/Edit
Icons and Options
Show Audit/Verification/Edit...
SEARCH FOR PROVIDER
DIGITAL PRODUCT PASS
SEARCH FOR PROVIDER...
Query Catalog for Asset Type:
 
data.core.digitalProductPass
Query Catalog for Asset Type:...
Audition/Verification Not Available
Audition/Verification Not Available
Show Verification/Audition
Unavailable
Show Verification/Audition...
AUDIT | VERIFICATION 
PROCESS
AUDIT | VERIFICATION...
EDR Token (Data Plane Token)
EDR Token (Data Plane Token)
Transfer Completed
Transfer Completed
Transfer Completed
Transfer Completed
Display Success Banner
Display Success Banner
Audition/Verification Completed
Audition/Verification Completed
Create Verification Registration
Request

Create Verification Registration...
Create/Sign CSC Verifiable Credential
Create/Sign CSC Verifiable Credential
Text
Text
Store CSC with DID
Store CSC with DID
Update Digital Twin Verification Flag
Update Digital Twin Verification Flag
Update Confirmation
Update Confirmation
Update Confirmation
Update Confirmation
Display
Confirmation
Display...
Signed CSC Verifiable Credential
Signed CSC Verifiable Credential
Confirm Sucess Update Request
Confirm Sucess Update Request
Data Provider
Data...
DPP 
PROVIDER
FRONTEND
DPP...
DPP 
PROVIDER
FRONTEND
DPP...
Send CSC in Body as JWT Token to DPP Backend using EDR Token
Send CSC in Body as JWT Token to DPP Backend using EDR Token
Data Provider
Data...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/technical/technical-integration-flow-csc-data-auditor.svg.license b/dpp-verification/resources/technical/technical-integration-flow-csc-data-auditor.svg.license new file mode 100644 index 000000000..4bd508f93 --- /dev/null +++ b/dpp-verification/resources/technical/technical-integration-flow-csc-data-auditor.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file diff --git a/dpp-verification/resources/technical/technical-integration-flow-csc.svg b/dpp-verification/resources/technical/technical-integration-flow-csc.svg new file mode 100644 index 000000000..f4c1f9761 --- /dev/null +++ b/dpp-verification/resources/technical/technical-integration-flow-csc.svg @@ -0,0 +1,4 @@ + + + +
EDC CONSUMER
EDC CONSUMER
Description
Aspects from Verification
Aspects from Verificati...
Action in Backend File System
Action in Backend File Syst...
Execution Order
Execution Order
Parallel Verification
Process in Backend
Parallel Verification...
EDC Data Plane Proxy
EDC Data Plane Proxy
Action in Frontend
Action in Frontend
EDC PROVIDER
EDC PROVIDER
DTR
DTR
SUBMODEL
SERVER
SUBMODEL...
WALLET
WALLET
EDC CONSUMER
EDC CONSUMER
DPP BACKEND
DPP BACKEND
DPP BACKEND
DPP BACKEND
EDC PROVIDER
EDC PROVIDER
DTR
DTR
SUBMODEL
SERVER
SUBMODEL...
WALLET
WALLET
Request Digital Twin
Request Digital Twin
Digital Twin + Submodels and Verification Flag
Digital Twin + Submodels and Verification Flag
Request Transfer for Asset Data
Request Transfer for Asset Data
Negotiation Completed
Negotiation Completed
EDR Token (Data Plane Token)
EDR Token (Data Plane Token)
Transfer Completed
Transfer Completed
Call Digital Twin HREF Url with EDR Token
Call Digital Twin HREF Url with EDR Token
Data/Passport Aspect
Data/Passport Aspect
SEMANTIC HUB
SEMANTIC HUB
SEMANTIC HUB
SEMANTIC HUB
DPP FRONTEND
DPP FRONTEND
DPP FRONTEND
DPP FRONTEND
User
User
User
User
RESUMED DATA RETRIEVAL FLOW
RESUMED DATA RETRIEVAL FLOW
Encrypt and Store Passport
Encrypt and Store Passport
If available, decrypt, retrieve then
delete passport

If available, decrypt, retrieve then...
Visualize Passport and
Verification Option
Visualize Passport and...
processId + contractId + Sign Token
processId + contractId + Sign Token
Get Status is equals
 "COMPLETED" and
"RECEIVED"

Get Status is equals...
Passport + Verification Token
Passport + Verification Token
Search for Passport
CX:354:NX-587
Search for Passport...
Normal
Data Retrieval
Flow
Normal...
DISCOVERY PHASE + DIGITAL TWIN REGISTRY SEARCH PHASE
DISCOVERY PHASE + DIGITAL TWIN REGISTRY SEARCH PHASE
Start Negotiation
Start Negotiation
DATA PLAUSIBILITY +
 SEMANTICS CHECK
DATA PLAUSIBILITY +...
VERIFICATION PROCESS
VERIFICATION PROCESS

Is the Verification Token available?
Is the Verification Token available?
Store Passport Data Encrypted with the Verification Token and Trigger Verification Process
Store Passport Data Encrypted with the Verification Token and Trigger Verification Process
1º - Store the model semantics in the cache, decrypt passport and check passport data semantics + data restrictions
2º - Update the verification status  
1º - Store the model semantics in the cache, decrypt passport and check passport data semantics + data rest...
Check if the model semantics was already retrieved
and is available in the cache
Check if the model semantics was already retrieved...
Show Verification Status
Show Verification Status
Retrieve Current Verification Status
Retrieve Current Verification Status
Show Final Verification Result
Show Final Verification Result
End of Verification Process 
Retrieve Final Status with Flaws
End of Verification Process...
Get Verification Status with
Verification Token
Get Verification Status with...
Verification Final Status
Verification Final Status
Verification Process Started
Verification Process Started
Verification Token + Passport Data
Verification Token + Passport Data
Request Verification
Request Verification
CERTIFIED DATA VERIFICATION + DATA INTEGRITY CHECK
CERTIFIED DATA VERIFICATION + DATA INTEGRITY CHECK
1º - Validate the Proof with the issuer public key
2º - Update the verification status  
1º - Validate the Proof with the issuer public ke...
DID Document with Public Key of Issuer
DID Document with Public Key of Issuer
Decode DID from Issuer and Request Public Key
Decode DID from Issuer and Request Public Key
1º - Hash passport attributes and compare with Verifiable Credential Hashes
2º - Update the verification status  
1º - Hash passport attributes and compare with Verifiable Credential Hashes...
Request Transfer for Asset Data
Request Transfer for Asset Data
EDR Token (Data Plane Token)
EDR Token (Data Plane Token)
Call for Control Plane DID of the Verifiable Credential
Call for Control Plane DID of the Verifiable Credential
Retrieve Certified Data Snapshot in a Verifiable Credential
Retrieve Certified Data Snapshot in a Verifiable Credential
Transfer Completed
Transfer Completed
Transfer Completed
Transfer Completed
Get Verification Status with
Verification Token
Get Verification Status with...
Verification Status
Verification Status
Request Negotiation of Asset
Request Negotiation of Asset
Agreement ID
Agreement ID
Transfer Completed
Transfer Completed
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/technical/technical-integration-flow-csc.svg.license b/dpp-verification/resources/technical/technical-integration-flow-csc.svg.license new file mode 100644 index 000000000..4bd508f93 --- /dev/null +++ b/dpp-verification/resources/technical/technical-integration-flow-csc.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) \ No newline at end of file From 9aba33341c15b73b32c3cf35e3c039857bbd62c7 Mon Sep 17 00:00:00 2001 From: Mathias Brunkow Moser Date: Mon, 13 May 2024 20:23:12 +0200 Subject: [PATCH 24/24] feat(dpp-verification): added examples for payloads for certificates --- dpp-verification/README.md | 520 +++++++++++++++++++++++++++++++------ 1 file changed, 446 insertions(+), 74 deletions(-) diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 682cfd59e..ffacc57bb 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -41,16 +41,16 @@ SPDX-License-Identifier: Apache-2.0 | | Date | Authors & Reviewers | | -------------------- | ----------------- | ----------------------------------------------------- | | **Created** | December 29, 2023 | [Mathias Brunkow Moser](https://github.com/matbmoser) | -| **Lastest Revision** | May 13, 2024 | [Mathias Brunkow Moser](https://github.com/matbmoser) | +| **Lastest Revision** | May 13, 2024 | [Mathias Brunkow Moser](https://github.com/matbmoser) | ## Authors | Name | Company | GitHub | Role | -| --------------------- | ------- |------------------------------------------ | --------------------------------------- | -| Mathias Brunkow Moser | CGI | [@matbmoser](https://github.com/matbmoser) | Digital Product Pass Software Architect | -| | | | | -| | | | | +| --------------------- | ------- | ------------------------------------------ | --------------------------------------- | +| Mathias Brunkow Moser | CGI | [@matbmoser](https://github.com/matbmoser) | Digital Product Pass Software Architect | +| | | | | +| | | | | ## Tags @@ -114,6 +114,11 @@ This concept has been proved to be of high interest from the Certification and V - [Flow Diagrams](#flow-diagrams) - [CDC Technical Verification Flow](#cdc-technical-verification-flow) - [CSC Technical Verification Flow](#csc-technical-verification-flow) +- [Technical Specification](#technical-specification) + - [Certification Aspects Schemas](#certification-aspects-schemas) + - [Certified Data Credential Schema](#certified-data-credential-schema) + - [Certified Snapshot Credential Schema](#certified-snapshot-credential-schema) + - [Attribute Certification Registry](#attribute-certification-registry) - [Technical Integration Design](#technical-integration-design) - [Interfaces](#interfaces) - [Certification Sequence Diagrams](#certification-sequence-diagrams) @@ -200,21 +205,22 @@ The other terminology from **Data Provider** to **Data Auditor** is called **Dat ![Role-Process Definition](./resources/processes/role-process-definition.svg) -|**Process Terminology**|**Actors**|**Description**|**Artifacts**| -| :-- | :-: | :-- | :-: | -|**Data Verification**|Data Consumer, Data Provider, Data Auditor|The data verification process englobes the complete journey from retrieving data as a data consumer from a data provider. It includes the search for verification statements and attribute level verification in digital twins.At the end of the journey attribute specific verification may or not be found. Other types of verification like self attestations may be or not retrieved. Depends in the available verification information.In the data verification process is included the verification of the signatures included in the data created and certified in the Data Certification Process. |**Verification Result** *with the status/flaws*| -|**Data Certification**|Data Provider, Data Auditor|The data certification process includes all the processes related to triggering the verification until providing the data for certifying specific attributes.The data provider triggers the certification for a external or internal data auditor, which generates and optionally stores a verification statements|**Certified Data Aspects** *as Verification Statements*| +| **Process Terminology** | **Actors** | **Description** | **Artifacts** | +| :---------------------- | :----------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-----------------------------------------------------: | +| **Data Verification** | Data Consumer, Data Provider, Data Auditor | The data verification process englobes the complete journey from retrieving data as a data consumer from a data provider. It includes the search for verification statements and attribute level verification in digital twins.At the end of the journey attribute specific verification may or not be found. Other types of verification like self attestations may be or not retrieved. Depends in the available verification information.In the data verification process is included the verification of the signatures included in the data created and certified in the Data Certification Process. | **Verification Result** *with the status/flaws* | +| **Data Certification** | Data Provider, Data Auditor | The data certification process includes all the processes related to triggering the verification until providing the data for certifying specific attributes.The data provider triggers the certification for a external or internal data auditor, which generates and optionally stores a verification statements | **Certified Data Aspects** *as Verification Statements* | ## **Roles/Actors** Three main roles are defined and have certain responsibilities or can conduct actions in the processes. Each role can have more than one W3C role and generate different artifacts as specified in the following table: -|**Role/Actors**|**Company Types**|**W3C Roles**|**Responsibilities/Actions**|**Use Cases**|**Artifacts**| -| :-- | --- | --- | :-- | :-- | :-- | -|Data Provider|OEMs, Tier-1|Issuer, Holder|- Creating and Issuing Data- Refence/Provision of data in a Digital Twin Registry
- Store and link complete data submodels in a infrastructure
- **[OPTIONAL]:** Self-sign data when issuing aspects
- **[OPTIONAL]:** Provide and Store certified credentials from external parties
- Store link to external parties certified credential aspects in Digital Twin Registry
- Requests and pays external parties (data auditors) to audit their data|As a data provider I want to be able to hand over my data to consumers and auditors. I want also to be able to manage my data and verified assets. In some cases I want to be able to self-testify my own issued data.| **Digital Twin + Submodels with EDC Endpoints for CDC and CSC** Certified Data Credential (CDC) or Plain **Digital Product Pass**
**[OPTIONAL]:** Storage of Certified Snapshot Credentials (CSC) in **Verification Statements Aspect**| -|Data Auditor|Auditors, Certification Agencies, Consulting Companies, OEMs|Issuer, **Optional: Holder** | - Selects from the data provider data some attributes following selective disclosure.- Certifies Attributes against "methods". And indicate in the generated credential which methods were used for certifying  For example:  - Standards - Rulebooks - Regulations - Manuals - Technical Specifications - etc...- Creates and issues a **Certified Verification Statement**- **[OPTIONAL]:** Provide and Store certified credentials|As a data auditor I want to be able to retrieve and visualize the data I need to audit. I also want to be able to "select" then "certify" specific attributes I was payed to audit by a Data Provider.|Certified Snapshot Credentials (CSC) in **Verification Statements Aspect**
**[OPTIONAL]:** Storage of Verification Aspect and provision through EDC| -|Data Consumer|Recyclers, Dismantlers, OEMs, Tier-1|Verifier|- Initializes the data retrieval process (Requesting the Data Provider).- Searches for the Verification Data after the data retrieval process. (Looking in the Data Provider Digital Twin)- Verifies signatures against a wallet if the data and attribute credentials received are correct.- Verifies data semantics and data plausibility against the data model semantics/restrictions.- Presents the verification result |As a data consumer I want to be able to know if the data I received is verified and which attributes are certified by an external auditor. I also want to be able to verify that the data certified is authentic and has been issued and signed by a Data Auditor or a Data Provider|**Verification Result Presentation**| +| **Role/Actors** | **Company Types** | **W3C Roles** | **Responsibilities/Actions** | **Use Cases** | **Artifacts** | +| :-------------- | ------------------------------------------------------------ | ---------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Data Provider | OEMs, Tier-1 | Issuer, Holder | - Creating and Issuing Data- Refence/Provision of data in a Digital Twin Registry
- Store and link complete data submodels in a infrastructure
- **[OPTIONAL]:** Self-sign data when issuing aspects
- **[OPTIONAL]:** Provide and Store certified credentials from external parties
- Store link to external parties certified credential aspects in Digital Twin Registry
- Requests and pays external parties (data auditors) to audit their data | As a data provider I want to be able to hand over my data to consumers and auditors. I want also to be able to manage my data and verified assets. In some cases I want to be able to self-testify my own issued data. | **Digital Twin + Submodels with EDC Endpoints for CDC and CSC** Certified Data Credential (CDC) or Plain **Digital Product Pass**
**[OPTIONAL]:** Storage of Certified Snapshot Credentials (CSC) in **Verification Statements Aspect** | +| Data Auditor | Auditors, Certification Agencies, Consulting Companies, OEMs | Issuer, **Optional: Holder** | - Selects from the data provider data some attributes following selective disclosure.- Certifies Attributes against "methods". And indicate in the generated credential which methods were used for certifying  For example:  - Standards - Rulebooks - Regulations - Manuals - Technical Specifications - etc...- Creates and issues a **Certified Verification Statement**- **[OPTIONAL]:** Provide and Store certified credentials | As a data auditor I want to be able to retrieve and visualize the data I need to audit. I also want to be able to "select" then "certify" specific attributes I was payed to audit by a Data Provider. | Certified Snapshot Credentials (CSC) in **Verification Statements Aspect**
**[OPTIONAL]:** Storage of Verification Aspect and provision through EDC | +| Data Consumer | Recyclers, Dismantlers, OEMs, Tier-1 | Verifier | - Initializes the data retrieval process (Requesting the Data Provider).- Searches for the Verification Data after the data retrieval process. (Looking in the Data Provider Digital Twin)- Verifies signatures against a wallet if the data and attribute credentials received are correct.- Verifies data semantics and data plausibility against the data model semantics/restrictions.- Presents the verification result | As a data consumer I want to be able to know if the data I received is verified and which attributes are certified by an external auditor. I also want to be able to verify that the data certified is authentic and has been issued and signed by a Data Auditor or a Data Provider | **Verification Result Presentation** | ### Abstract Interaction (Business Interaction) + In the following diagram we can observe how the data provider, the data auditor and the data consumer interact:# Certification Processes ![Roles Business Interaction](./resources/processes/roles-business-interaction.svg) @@ -224,6 +230,7 @@ The **Data Consumer** `verifies` the data incoming from the **data provider** an The **Data Auditor** retrieves data from the **data provider** and `certifies` the data against standards, then sends the `verification statement or certificate` to the **data provider**. ### Document Exchange Details + The different roles will exchange different document which will contain, information and proof of the data which is being exchanged. ![Roles Document Exchange Interaction](./resources/processes/roles-document-exchange-interaction.svg) @@ -237,18 +244,18 @@ When we talk about verification and certification processes, serveral questions When a concept is developed not all the processes and problems can be addressed, therefore this concept has some conditions that should be considered. Therefore we have decided to list the initial asumptions that are required for this verification process to be successful: -| Asumption | Description | -| --- | ----- | -| **Digital Product Pass Process Creation is established** | The digital product pass process is a complex process that is implemented in each *Data Provider* and is tailored to the systems and application avaialable in each company. This concepts starts its journey from the assumption that the digital product pass data is already available in the **Data Provider** infrastructure as a **Serialized Aspect Model Payload** | -| **Data Exchange is Standardized** | As we know in Catena-X the data exchange between partners in this case need to be standardized, there fore the digital product pass data and all the related statements will be standardized and available for all members of the network to be able to parse and handle the fields and certifications. | -| **Data Certification Process is defined by Data Auditor** | The complexity of the certification process is high and can vary from auditor company to company. Therefore in this concept there was decided to resume the certification of attributes to the most unitary and simple **Technical Solution**, allowing each company to adopt and implement the process according to its needs and requirements. | -| **Only minimum exchanged data is specified** | Only the minimum exchanged data is specified when transfering data from one company to another. When a certification process is triggered there are many other attributes, data and elements to be specified. Only the neccessary attributes to retrieve the data are specified in this concept to keep things simple and indicate the MVP attributes needed to make it possible. | -| **All legal requirements are fullfilled** | In this company we asume that the company has all the neccessary legal requirements and agreements to exchange data with its partners in the Catena-X network, policies and permissions are not going to be specified, all the EDC configurations are the ones specified by the Catena-X network. For more information [see this specification](https://github.com/catenax-eV/cx-odrl-profile). | -| **The digital product pass standards are followed** | The digital twin registry and data service must be implemented as indicated in the latest CX standard for digital product passports and other products. | -| **The certification and verification are not limited to digital product passports** | This concept sets the initial path to verify any aspect model payload in Catena-X that uses JSON as its serialized representation. The concept is tailored to digital product passports since the **EcoDesign** regulations are playing a important role in the future of Data Ecosystems like *Catena-X*. | -| **The wallets used in the concept allow to sign any type of credential** | In order for the concept to work the wallets need to be able to sign any credential document using the private key, and also enable the "DID" endpoint to retrieve the public keys through the internet (DID WEB). | -| **Each company MUST have an decentral wallet** | In order to sign the credentials by your own as company you need to have a valid that fits to the decentralized wallets concept that is going to be standardized in Catena-X. | -| **All data exchanges are done through the Eclipse DataSpace Connector** | Every company **MUST** have a EDC in order to provide data to othere parties and consume data from other partners. Data sovereighty is followed and shall use the guidelines provided by the Catena-X network. | +| Asumption | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Digital Product Pass Process Creation is established** | The digital product pass process is a complex process that is implemented in each *Data Provider* and is tailored to the systems and application avaialable in each company. This concepts starts its journey from the assumption that the digital product pass data is already available in the **Data Provider** infrastructure as a **Serialized Aspect Model Payload** | +| **Data Exchange is Standardized** | As we know in Catena-X the data exchange between partners in this case need to be standardized, there fore the digital product pass data and all the related statements will be standardized and available for all members of the network to be able to parse and handle the fields and certifications. | +| **Data Certification Process is defined by Data Auditor** | The complexity of the certification process is high and can vary from auditor company to company. Therefore in this concept there was decided to resume the certification of attributes to the most unitary and simple **Technical Solution**, allowing each company to adopt and implement the process according to its needs and requirements. | +| **Only minimum exchanged data is specified** | Only the minimum exchanged data is specified when transfering data from one company to another. When a certification process is triggered there are many other attributes, data and elements to be specified. Only the neccessary attributes to retrieve the data are specified in this concept to keep things simple and indicate the MVP attributes needed to make it possible. | +| **All legal requirements are fullfilled** | In this company we asume that the company has all the neccessary legal requirements and agreements to exchange data with its partners in the Catena-X network, policies and permissions are not going to be specified, all the EDC configurations are the ones specified by the Catena-X network. For more information [see this specification](https://github.com/catenax-eV/cx-odrl-profile). | +| **The digital product pass standards are followed** | The digital twin registry and data service must be implemented as indicated in the latest CX standard for digital product passports and other products. | +| **The certification and verification are not limited to digital product passports** | This concept sets the initial path to verify any aspect model payload in Catena-X that uses JSON as its serialized representation. The concept is tailored to digital product passports since the **EcoDesign** regulations are playing a important role in the future of Data Ecosystems like *Catena-X*. | +| **The wallets used in the concept allow to sign any type of credential** | In order for the concept to work the wallets need to be able to sign any credential document using the private key, and also enable the "DID" endpoint to retrieve the public keys through the internet (DID WEB). | +| **Each company MUST have an decentral wallet** | In order to sign the credentials by your own as company you need to have a valid that fits to the decentralized wallets concept that is going to be standardized in Catena-X. | +| **All data exchanges are done through the Eclipse DataSpace Connector** | Every company **MUST** have a EDC in order to provide data to othere parties and consume data from other partners. Data sovereighty is followed and shall use the guidelines provided by the Catena-X network. | # Verification Statements @@ -256,10 +263,10 @@ For our technical implementation from the Certification/Verification of aspect m ## Abstract Types -| Type | Description | -| -- | -- | -|Complete Data Verification Statement | Self Signed Document containing the complete data from a aspect model payload. | -|Partial Data Verification Statement|Attribute level certified document containing one or more attributes from the **Complete Data Verification Statement** or from a **Plain JSON Aspect Model payload**. | +| Type | Description | +| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Complete Data Verification Statement | Self Signed Document containing the complete data from a aspect model payload. | +| Partial Data Verification Statement | Attribute level certified document containing one or more attributes from the **Complete Data Verification Statement** or from a **Plain JSON Aspect Model payload**. | ## Verification Statements Documents/Credentials @@ -271,10 +278,10 @@ The different verificaiton statement types were mapped to certain technical veri > For more information about what is a verifiable credential [go to this chapter](#what-is-a-verifiable-credential). -| Document/Credential Name | Short Name |Issuer |Verification Statement Type | Content | Description | -| -- | -- | -- | -- | -- | -- | -| **Certified Data Credential** | **CDC** | Data Provider | Complete Data Verification Statement | 1. Complete Aspect Model Payload Data
2. Signature from Data Issuer
3. Version Control | Credential that contains the complete passport and is signed by the issuer of the data. It allows to track changes during the updates from the passport in the supply chain.
It can be "self-testified" by the data provider when creating/issuing the passport data. | -| **Certified Snapshot Credential** | **CSC** | Data Auditor | Partial Data Verification Statement | 1. Selected attributes from the Aspect Model Payload Data
2. Hashed "proofs" per attribute and data auditor signature
3. Methods used to "certify" each attribute
4. Reference to Audited Complete Verification Statement Content | Credential that follows "selective disclosure" by hashing the verified fields allowing the verification in milliseconds by just comparing hashes. It contains the "partial" digital product pass.
It is signed by the Auditor of the data attributes at the end of the certification, indicating the attributes which are included there were certified against specific "methods". | +| Document/Credential Name | Short Name | Issuer | Verification Statement Type | Content | Description | +| --------------------------------- | ---------- | ------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Certified Data Credential** | **CDC** | Data Provider | Complete Data Verification Statement | 1. Complete Aspect Model Payload Data
2. Signature from Data Issuer
3. Version Control | Credential that contains the complete passport and is signed by the issuer of the data. It allows to track changes during the updates from the passport in the supply chain.
It can be "self-testified" by the data provider when creating/issuing the passport data. | +| **Certified Snapshot Credential** | **CSC** | Data Auditor | Partial Data Verification Statement | 1. Selected attributes from the Aspect Model Payload Data
2. Hashed "proofs" per attribute and data auditor signature
3. Methods used to "certify" each attribute
4. Reference to Audited Complete Verification Statement Content | Credential that follows "selective disclosure" by hashing the verified fields allowing the verification in milliseconds by just comparing hashes. It contains the "partial" digital product pass.
It is signed by the Auditor of the data attributes at the end of the certification, indicating the attributes which are included there were certified against specific "methods". | # Creating Trust and Risk Mitigation Assets @@ -307,30 +314,30 @@ According to the W3C () a verifiable credential is: -- Information related to identifying +- Information related to identifying the [subject](https://www.w3.org/TR/vc-data-model-2.0/#dfn-subjects) of the [credential](https://www.w3.org/TR/vc-data-model-2.0/#dfn-credential) (for example, a photo, name, or identification number) -- Information related to the issuing authority (for example, a city +- Information related to the issuing authority (for example, a city government, national agency, or certification body) -- Information related to the type +- Information related to the type of [credential](https://www.w3.org/TR/vc-data-model-2.0/#dfn-credential) this is (for example, a Dutch passport, an American driving license, or a health insurance card) -- Information related to specific attributes or properties being +- Information related to specific attributes or properties being asserted by the issuing authority about the [subject](https://www.w3.org/TR/vc-data-model-2.0/#dfn-subjects) (for example, nationality, the classes of vehicle entitled to drive, or date of birth) -- Evidence related to how +- Evidence related to how the [credential](https://www.w3.org/TR/vc-data-model-2.0/#dfn-credential) was derived -- Information related to constraints on the credential (for example, +- Information related to constraints on the credential (for example, validity period, or terms of use). A [verifiable @@ -350,13 +357,13 @@ The signed document credential has the following resumed schema: ![Configuration Sections](./resources/processes/document-credential-resume.svg) -Depending in each verification types different configuration will be provided in the location of the payload aspect or specific attributes. The detailed configuration is defined in the [Technical Integration](#technical-integration) chapter. +Depending in each verification types different configuration will be provided in the location of the payload aspect or specific attributes. The detailed configuration is defined in the [Technical Integration Design](#technical-integration-design) chapter. -| Section | Description | -| --- | ---- | -| **Metadata** | The metadata contains the context information and credential schema details. Also contains the identification of the credential and which documents it contained. | -| **Aspect Model Data / Credential Data** | In this section is defined all the neccessary data of each credential type. The specific attributes with methods and proof from data auditor or the original data issued and sigend by the data provider.| -| **Proof and Verification Methods** | This section contain the digital signature from the Data Provider or Data Auditor. It also contains all the methods for a Data Verifier/Data Consumer to access the verification requirements to check if the credential is still valid and not revoked.| +| Section | Description | +| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Metadata** | The metadata contains the context information and credential schema details. Also contains the identification of the credential and which documents it contained. | +| **Aspect Model Data / Credential Data** | In this section is defined all the neccessary data of each credential type. The specific attributes with methods and proof from data auditor or the original data issued and sigend by the data provider. | +| **Proof and Verification Methods** | This section contain the digital signature from the Data Provider or Data Auditor. It also contains all the methods for a Data Verifier/Data Consumer to access the verification requirements to check if the credential is still valid and not revoked. | # Certification Processes @@ -378,22 +385,21 @@ Once that is done the data will be linked in a `digital twin`, so in this way by Once the EDC Push Notification is received by the `data auditor` the Digital Twin and the Digital Product Pass (JSON aspect model payload to be audited) will be retrieved using the `EDC Connector` and through the `EDC Data Plane proxy`. When the passport aspect is available the data auditor can certify the `specific attributes requested` from the product against the different catena-x standards and regulations. The `data auditor` will create a new document (a certified snapshot credential) which contains the proof of compliance of the specific attributes audited in the passport using selective disclosure, there the data is not copied it is hashed so it can be signed and stored in the wallet from the `data auditor` for tracking reasons. -The `CSC Document` (the certificate) will then be sent to the `data provider` using the EDC Push Notification functionality. When the data arrives in the data provider it will be then added to the `Attribute Certification Record (ACR)` which contains all the attribute certifications for an specific aspect model payload submodel. It contains a list of credentials provided by one or more auditors for this aspect. It will be linked in the digital twin where the aspect is and if additional certification is required it will be triggered and the process repeats again. +The `CSC Document` (the certificate) will then be sent to the `data provider` using the EDC Push Notification functionality. When the data arrives in the data provider it will be then added to the `Attribute Certification Registry (ACR)` which contains all the attribute certifications for an specific aspect model payload submodel. It contains a list of credentials provided by one or more auditors for this aspect. It will be linked in the digital twin where the aspect is and if additional certification is required it will be triggered and the process repeats again. -![](./resources/processes/csc-workflow.svg) +![csc workflow](./resources/processes/csc-workflow.svg) ## Self-Testify Certification Process The self-testify certification process consist in the data provided singing its own data which is being provided. Basically giving proof that he was the one that aggregated and created this data. -![](./resources/processes/cdc-workflow.svg) - +![cdc workflow](./resources/processes/cdc-workflow.svg) ## Total Certification Process The total certification process is the same as the attribute verification process however the complete process is not starting with a plain json file. In this case the data provider can `self testify` its own data. The rest of the process is same and will result in the verification from the specific attributes from the aspect. -![](./resources/processes/cdc-csc-workflow.svg) +![cdc and csc workflow](./resources/processes/cdc-csc-workflow.svg) # Certification and Verification Methods @@ -430,10 +436,375 @@ By simply accessing the digital twin the data will be available as a submodel, t ### CSC Technical Verification Flow -For the partial credential the data will be available in a "Verification" aspect called `Attribute Certification Record` (ACR) which contains the different attribute verification for a particular submodel in a digital twin. +For the partial credential the data will be available in a "Verification" aspect called `Attribute Certification Registry` (ACR) which contains the different attribute verification for a particular submodel in a digital twin. ![Verification Flow CSC](./resources/processes/verification-process-csc.svg) +# Technical Specification + +## Certification Aspects Schemas + + +> [!CAUTION] +> The information added here its still not productive, what its proposed is simply a MOCK, and its not ready to be implemented in a system yet, the actual schema and details **MUST** be defined in the future of this documentation + +### Certified Data Credential Schema + +The CDC schema contains the complete passport and some additional information, as well as as the signature of the data provider. + +Here we have an example with the [Digital Product Passport v2.0.0](https://raw.githubusercontent.com/eclipse-tractusx/sldt-semantic-models/main/io.catenax.generic.digital_product_passport/2.0.0) Aspect Model. + +
+🚀 Expand Certified Data Credential (CDC) Aspect Schema + +```json +{ + "id": "https://dpp-system-url.com/api/public/cx:mfg024:prt-30001", + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "http://json-schema.org/draft-04/schema", + "https://raw.githubusercontent.com/eclipse-tractusx/sldt-semantic-models/main/io.catenax.generic.digital_product_passport/2.0.0/gen/DigitalProductPassport-schema.json", + "https://w3c.github.io/vc-jws-2020/contexts/v1/" + ], + "type": ["VerifiableCredential", "CDC", "DPP"], + "issuer": "did:web:wallet-url.test.com:BPNL00000007RVTB", + "credentialSubject": { + "id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3A6da1f07c-999b-4602-b4d3-8eb649e5d10f", + "parent": { + "@id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3A1c5b6a7c-90d4-3481-0538-f134ff53076d", + "checksum": "64b1a523da600e8fc0018cf57b8f7756b83bb6e9b11c81b1c7444272fab239902321b1b6ae6624d6846fd010616ae98c118f12491f922badd64e58b782c6a115" + }, + "checksum": "ac35e22f24fc4257e2759f7e7105f14568e5e86573fea4b05515697f254111c1f3490d28653b400cb9ddc9690760ef1390f5cac7a3d55966490dab994c1f5cd1", + "data": { + "typology" : { + "shortName" : "8HP60", + "class" : { + "definition" : "Manual transmission (motor vehicle)", + "code" : "44-09-02-02" + }, + "longName" : "Product Description long text" + }, + "metadata" : { + "predecessor" : "null", + "issueDate" : "2000-01-01", + "version" : "1.0.0", + "economicOperator" : { + "legitimization" : "DE123456789", + "identification" : "BPNL1234567890ZZ" + }, + "status" : "draft", + "expirationDate" : "2000-01-01" + }, + "characteristics" : { + "physicalDimension" : { + "grossWeight" : { + "value" : 20.5, + "unit" : "unit:kilogram" + }, + "weightOrVolume" : { + "left" : { + "value" : 20.5, + "unit" : "unit:cubicMetre" + } + }, + "diameter" : { + "value" : 20.5, + "unit" : "unit:millimetre" + }, + "grossVolume" : { + "value" : 20.5, + "unit" : "unit:cubicMetre" + }, + "width" : { + "value" : 20.5, + "unit" : "unit:millimetre" + }, + "length" : { + "value" : 20.5, + "unit" : "unit:millimetre" + }, + "height" : { + "value" : 20.5, + "unit" : "unit:millimetre" + } + }, + "lifespan" : [ { + "value" : 36, + "unit" : "unit:day", + "key" : "guaranteed lifetime" + } ], + "physicalState" : "solid" + }, + "commercial" : { + "placedOnMarket" : "2000-01-01" + }, + "identification" : { + "localIdentifier" : { + "value" : "PRT-30001", + "key" : "PartInstanceId" + }, + "additionalCode" : [ { + "value" : "8703 24 10 00", + "key" : "TARIC" + }, { + "value" : "MFG024", + "key" : "manufacturerPartId" + } ], + "dataCarrier" : { + "carrierType" : "QR", + "carrierLayout" : "upper-left side" + } + }, + "sources" : [ { + "header" : "Sustainability Document Material XY", + "category" : "Product Specifications", + "type" : "URL", + "content" : "www.alink.pdf" + } ], + "handling" : { + "spareParts" : { + "left" : { + "producer" : [ { + "id" : "BPNL1234567890ZZ" + } ], + "part" : [ { + "name" : "Aluminum Housing", + "gtin" : "12345678" + } ] + } + }, + "substanceOfConcern" : { + "left" : [ { + "name" : { + "name" : "phenolphthalein", + "type" : "IUPAC" + }, + "location" : "Housing", + "unit" : "unit:partPerMillion", + "concentration" : { + "left" : [ { + "max" : 2.6, + "min" : 2.1 + } ] + }, + "exemption" : "shall not apply to product x containing not more than 1,5 ml of liquid", + "id" : [ { + "type" : "CAS", + "id" : "201-004-7" + } ] + } ] + } + }, + "additionalData" : [ { + "description" : "This is the machine parameters that are produced when the machine is used", + "label" : "Specific Manufacturer Machine Parameters", + "type" : { + "typeUnit" : null, + "dataType" : "object" + }, + "children" : [ { + "description" : "The usage of the eletricity in the machine", + "label" : "Eletricity Usage", + "type" : { + "typeUnit" : "unit:volts", + "dataType" : "integer" + }, + "data" : "25" + }, { + "description" : "The name of the machine that produced the product", + "label" : "Machine Name", + "type" : { + "typeUnit" : null, + "dataType" : "string" + }, + "data" : "Laser Machine MX-421W" + }, { + "description" : "The list of products the machine can produce", + "label" : "Product Names", + "type" : { + "typeUnit" : null, + "dataType" : "array" + }, + "data" : [ "Tranmissions", "Batteries", "Seats", "Doors" ] + } ] + }, { + "description" : "This are the properties of interest", + "label" : "Properties of Interest", + "type" : { + "typeUnit" : null, + "dataType" : "object" + }, + "children" : [ { + "description" : "This are the main properties of interest", + "label" : "Main Properties", + "type" : { + "typeUnit" : null, + "dataType" : "object" + }, + "children" : [ { + "description" : "This is the Normal temperature of production", + "label" : "Normal Temperature", + "type" : { + "typeUnit" : "unit:celcius", + "dataType" : "float" + }, + "data" : 62.7 + }, { + "description" : "This is the minimmum temperature of production", + "label" : "Minimum Temperature", + "type" : { + "typeUnit" : "unit:celcius", + "dataType" : "float" + }, + "data" : -80.68 + }, { + "description" : "This is the maximum temperature of production", + "label" : "Maximum Temperature", + "type" : { + "typeUnit" : "unit:celcius", + "dataType" : "float" + }, + "data" : 800.85 + } ] + } ] + } ], + "sustainability" : { + "PEF" : { + "carbon" : [ { + "lifecycle" : "main product production", + "rulebook" : "https://www.alink.pdf/", + "unit" : "kg CO2 eq", + "type" : "Climate Change Total", + "value" : 12.678 + } ] + }, + "state" : "first life", + "material" : { + "left" : [ { + "name" : { + "name" : "phenolphthalein", + "type" : "IUPAC" + }, + "unit" : "unit:partPerMillion", + "recycled" : false, + "id" : [ { + "type" : "CAS", + "id" : "201-004-7" + } ], + "value" : 5, + "renewable" : true + } ] + }, + "critical" : { + "left" : [ "eOMtThyhVNLWUZNRcBaQKxI" ] + } + }, + "operation" : { + "importer" : { + "left" : { + "eori" : "GB123456789000", + "id" : "BPNL1234567890ZZ" + } + }, + "manufacturer" : { + "facility" : "BPNS1234567890ZZ", + "manufacturingDate" : "2000-01-31", + "manufacturer" : "BPNL1234567890ZZ" + } + } + } + }, + "issuanceDate": "2024-02-15T00:00:00.000Z", + "proof": { + "type": "JsonWebSignature2020", + "created": "2024-02-15T12:35:39Z", + "verificationMethod": "did:web:wallet-url.test.com:BPNL00000007RVTB#8f858500-7008-4b97-a8bb-605d4c8eca75", + "proofPurpose": "assertionMethod", + "jws": "eyJhbGciOiJFZERTQSJ9..4snTkqta4UwXIAtKJiIEDhiwmVtAC3kml0j7Wc25vmTbLbPlviXgL9he9X0A0xRTNlnsEwILf0NbPIyeztzJCw" + } +} +``` + +
+ +## Certified Snapshot Credential Schema + +The CDC schema contains the partial passport with different attributes, all them with the methods used for the ceritification, as well as as the signature of the data provider. + +Here we have an example of the generated CSC from the [previous CDC Aspect](#certified-data-credential-schema) the [Digital Product Passport v2.0.0](https://raw.githubusercontent.com/eclipse-tractusx/sldt-semantic-models/main/io.catenax.generic.digital_product_passport/2.0.0) Aspect Model. + +
+🚀 Expand Certified Snapshot Credential (CSC) Aspect Schema + +```json +{ + "id": "https://dpp-system-url.com/api/public/cx:mfg024:prt-30001", + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "http://json-schema.org/draft-04/schema", + "https://raw.githubusercontent.com/eclipse-tractusx/sldt-semantic-models/main/io.catenax.generic.digital_product_passport/2.0.0/gen/DigitalProductPassport-schema.json", + "https://w3c.github.io/vc-jws-2020/contexts/v1/" + ], + "type": [ + "VerifiableCredential", + "CSC", + "DPP" + ], + "issuer": "did:web:wallet-url.test.com:BPNL000000086WTL", + "credentialSubject": { + "id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3Acd1c0904-27e2-4ae2-8751-5c8c8e4b6812", + "checksum": "ac35e22f24fc4257e2759f7e7105f14568e5e86573fea4b05515697f254111c1f3490d28653b400cb9ddc9690760ef1390f5cac7a3d55966490dab994c1f5cd1", + "data": [ + { + "path": "sustainability.PEF.carbon[0].value", + "proof": "112b7337ac2710961e728f5bf983ce1dbdef1972ed6ec949982faf7c80566b7f9146a781d40a3166a9b00286b46136be863c3ca16c6b9d13c218b675892a4fd9", + "method": [ + { + "type": "Standard", + "name": "PCF Rulebook Standard", + "id": "CX-0029", + "url": "https://catena-x.net/fileadmin/user_upload/Standard-Bibliothek/Update_September23/CX-0029-ProductCarbonFootprintRulebook-v2.0.0.pdf" + }, + { + "type": "Regulation", + "name": "Ecodesign for Sustainable Products Regulation", + "id": "2009/125/EC", + "url": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:02009L0125-20121204&from=EN" + } + ] + }, + { + "path": "sustainability.state", + "proof": "f4f14ed3c319f1f1cd4ee5a50353ec0147da5cb0f8da86a3161bd2c70c83026bc4bdf64c99a4a38fb10afc19f6e07e6cbf820981ab13468133da3a403036e9eb", + "method": [ + { + "type": "Standard", + "name": "Secondary Material Content Standard", + "id": "CX-0098", + "url": "https://catena-x.net/fileadmin/user_upload/Standard-Bibliothek/Update_Januar_2024/CX-0098-AspectModelSecondaryMaterialContent-v1.0.0.pdf" + } + ] + } + ] + }, + "issuanceDate": "2024-02-15T00:00:00.000Z", + "proof": { + "type": "JsonWebSignature2020", + "created": "2024-02-15T12:35:39Z", + "verificationMethod": "did:web:wallet-url.test.com:BPNL000000086WTL#049f920c-e702-4e36-9b01-540423788a90", + "proofPurpose": "assertionMethod", + "jws": "eyJhbGciOiJFZERTQSJ9..4snTkqta4UwXIAtKJiIEDhiwmVtAC3kml0j7Wc25vmTbLbPlviXgL9he9X0A0xRTNlnsEwILf0NbPIyeztzJCw" + } +} +``` + +
+ +## Attribute Certification Registry + +> [!WARNING] +> The attribute certification registry details is still not available. It will contain the complete list of CSC certificates and also reference to the CDC or plain json submodel in the same digital twin. + # Technical Integration Design > [!WARNING] @@ -483,28 +854,28 @@ The following references were used as inspiration for understanding more how pro No content with copyright was copied. All the information used as reference in this documentation is open source, is available for the public or released under creative commons license. -| Name | Author | Date | Link | -|:---------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Data Integrity Demonstrator (TRS) in Supply Chain | [Matthias Binzer](https://github.com/matgnt) - Bosch | 2023 | https://github.com/boschresearch/cx-data-integrity-demonstrator | -| ID Union Data Integrity Demonstrator | [Matthias Binzer](https://github.com/matgnt) - Bosch | 2023 | https://github.com/IDunion/i40-examples/tree/main/nameplate-vc | -| Digital Product Passport Verifiable Credential Demo | Spherity | 2023 | https://acme.dpp.spherity.com/ | -| Verifiable Credentials Data Model v1.1/v2.0 | W3C | 2022 - 2024 | https://www.w3.org/TR/vc-data-model/ https://www.w3.org/TR/vc-data-model-2.0/ | -| Tractus-X SSI Documentation | Catena-X Core-ART Architects & Eclipse Tractus-X Contributors | 2023 | https://github.com/eclipse-tractusx/ssi-docu/tree/main/docs/architecture/cx-3-2 | -| Ed25519: high-speed high-security signatures | Daniel J. Bernstein, University of Illinois at Chicago Niels Duif, Technische Universiteit Eindhoven Tanja Lange, TechnischeUniversiteit Eindhoven Peter Schwabe,National Taiwan UniversityBo-Yin Yang,Academia Sinica | 2017 | https://ed25519.cr.yp.to/ | -| Digital Product Pass Documentation and Arc42 | [Mathias Brunkow Moser](https://github.com/matbmoser) & [Muhammad Saud Khan](https://github.com/saudkhan116) - CGI - Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/digital-product-pass/ https://github.com/eclipse-tractusx/digital-product-pass/blob/main/docs/arc42/Arc42.md | -| Managed Identity Wallets | Tractus-X Contributors | 2022-2024 | https://github.com/eclipse-tractusx/managed-identity-wallet | -| Digital Twin Registry | Bosch - Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/sldt-digital-twin-registry | -| Tractus-X EDC | Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/tractusx-edc | -| Eclipse Connector | Eclipse Foundation Contributors | 2021-2024 | https://github.com/eclipse-edc/Connector | -| Universal Resolver for DIDs | Universal Resolver | 2017-2024 | https://dev.uniresolver.io/ https://github.com/decentralized-identity/universal-resolver | -| Decentralized Identifiers (DIDs) v1.0 | W3C | 2022 | https://www.w3.org/TR/did-core/ | -| Decentralized Identifier Resolution (DID Resolution) v0.3 | W3C | 2023 | https://w3c-ccg.github.io/did-resolution/ | -| Self-Sovereign Identity - Decentralized Digital Identity and Verifiable Credentials v2 | Manning Publications: manning.com | 2020 | https://livebook.manning.com/book/self-sovereign-identity/chapter-8/v-2/7 | -| EECC Verifier for Verifiable Credentials | Free Software Foundation, Inc (https://fsf.org) | 2022-2024 | https://github.com/european-epc-competence-center/vc-verifier [ssi.eecc.de/verifier](ssi.eecc.de/verifier/) | -| Identity Resolution Verification | European EPC Competence Center GmbHhttps://eecc.info/ | 2022-2024 | https://id.eecc.de/ | -| SuplyTree - The Inter-company Tamper-evidence Protocol for Supply Chain Traceability | Matthias Guenther, Robert Bosch GmbH, Economy of Things Dominie Woerner, Robert Bosch Switzerland, Economy of Things | 2023 | | -| A Beginners Guide to Decentralized Identifiers (DIDs) | Amarachi Johnson-Ubah - Medium | 2022 | https://medium.com/veramo/a-beginners-guide-to-decentralized-identifiers-dids-5e842398e82c#:~:text=A%20decentralized%20identifier%20is%20an,the%20signatures%20of%20that%20subject | -| Schema Organization for JSON-LD | W3C | 2021-2024 | https://schema.org/ | +| Name | Author | Date | Link | +| :------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Data Integrity Demonstrator (TRS) in Supply Chain | [Matthias Binzer](https://github.com/matgnt) - Bosch | 2023 | https://github.com/boschresearch/cx-data-integrity-demonstrator | +| ID Union Data Integrity Demonstrator | [Matthias Binzer](https://github.com/matgnt) - Bosch | 2023 | https://github.com/IDunion/i40-examples/tree/main/nameplate-vc | +| Digital Product Passport Verifiable Credential Demo | Spherity | 2023 | https://acme.dpp.spherity.com/ | +| Verifiable Credentials Data Model v1.1/v2.0 | W3C | 2022 - 2024 | https://www.w3.org/TR/vc-data-model/ https://www.w3.org/TR/vc-data-model-2.0/ | +| Tractus-X SSI Documentation | Catena-X Core-ART Architects & Eclipse Tractus-X Contributors | 2023 | https://github.com/eclipse-tractusx/ssi-docu/tree/main/docs/architecture/cx-3-2 | +| Ed25519: high-speed high-security signatures | Daniel J. Bernstein, University of Illinois at Chicago Niels Duif, Technische Universiteit Eindhoven Tanja Lange, TechnischeUniversiteit Eindhoven Peter Schwabe,National Taiwan UniversityBo-Yin Yang,Academia Sinica | 2017 | https://ed25519.cr.yp.to/ | +| Digital Product Pass Documentation and Arc42 | [Mathias Brunkow Moser](https://github.com/matbmoser) & [Muhammad Saud Khan](https://github.com/saudkhan116) - CGI - Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/digital-product-pass/ https://github.com/eclipse-tractusx/digital-product-pass/blob/main/docs/arc42/Arc42.md | +| Managed Identity Wallets | Tractus-X Contributors | 2022-2024 | https://github.com/eclipse-tractusx/managed-identity-wallet | +| Digital Twin Registry | Bosch - Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/sldt-digital-twin-registry | +| Tractus-X EDC | Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/tractusx-edc | +| Eclipse Connector | Eclipse Foundation Contributors | 2021-2024 | https://github.com/eclipse-edc/Connector | +| Universal Resolver for DIDs | Universal Resolver | 2017-2024 | https://dev.uniresolver.io/ https://github.com/decentralized-identity/universal-resolver | +| Decentralized Identifiers (DIDs) v1.0 | W3C | 2022 | https://www.w3.org/TR/did-core/ | +| Decentralized Identifier Resolution (DID Resolution) v0.3 | W3C | 2023 | https://w3c-ccg.github.io/did-resolution/ | +| Self-Sovereign Identity - Decentralized Digital Identity and Verifiable Credentials v2 | Manning Publications: manning.com | 2020 | https://livebook.manning.com/book/self-sovereign-identity/chapter-8/v-2/7 | +| EECC Verifier for Verifiable Credentials | Free Software Foundation, Inc (https://fsf.org) | 2022-2024 | https://github.com/european-epc-competence-center/vc-verifier [ssi.eecc.de/verifier](ssi.eecc.de/verifier/) | +| Identity Resolution Verification | European EPC Competence Center GmbHhttps://eecc.info/ | 2022-2024 | https://id.eecc.de/ | +| SuplyTree - The Inter-company Tamper-evidence Protocol for Supply Chain Traceability | Matthias Guenther, Robert Bosch GmbH, Economy of Things Dominie Woerner, Robert Bosch Switzerland, Economy of Things | 2023 | | +| A Beginners Guide to Decentralized Identifiers (DIDs) | Amarachi Johnson-Ubah - Medium | 2022 | https://medium.com/veramo/a-beginners-guide-to-decentralized-identifiers-dids-5e842398e82c#:~:text=A%20decentralized%20identifier%20is%20an,the%20signatures%20of%20that%20subject | +| Schema Organization for JSON-LD | W3C | 2021-2024 | https://schema.org/ | # Special Thanks @@ -522,6 +893,7 @@ explanation of this Certification and Verification Concept. | **Abbreviation** | **Complete Term** | | --------------------- | ---------------------------------------------------------- | | AAS | Asset Administration Shell | +| ACR | Attribute Certification Registry | | API | Application Programming Interfaces | | BPN(BPNL, BPNA, BPNS) | Business Partner Number (Legal Entities, Addresses, Sites) | | CSC | Certified Snapshot Credential |