cleaning PRD-PCD doc

This commit is contained in:
NicolasCantu 2024-02-14 16:56:00 +01:00
parent 92aef05369
commit 630b58df3c
2 changed files with 5 additions and 103 deletions

View File

@ -52,8 +52,12 @@
## 1. <a name='Objectif'></a>Objectif ## 1. <a name='Objectif'></a>Objectif
L'objectif de ce document est de décrire les spécifications techniques des messages de type `Message` et de type `MessageConnect` pour le réseau de relais et les clients.
## 2. <a name='Porte'></a>Portée ## 2. <a name='Porte'></a>Portée
Ce document concerne les messages de type `Message` et de type `MessageConnect` pour le réseau de relais et les clients.
## 3. <a name='Documentsderfrence'></a>3. Documents de référence ## 3. <a name='Documentsderfrence'></a>3. Documents de référence
Voir [Doc_references.md](Doc_references.md). Voir [Doc_references.md](Doc_references.md).

View File

@ -33,41 +33,12 @@ La spécification couvre la conception, le développement, et l'application prat
Voir [Doc_references.md](Doc_references.md). Voir [Doc_references.md](Doc_references.md).
### 3.3. <a name='StructuredesPCDetPRDetdeleurattributgnriqueRequest'></a>Structure des PCD et PRD et de leur attribut générique Request ### 3.3. <a name='StructuredesPCDetPRDetdeleurattributgnriqueRequest'></a>Requetes
La structure Request joue un rôle central dans la création des `PRD` et des `PCD`, servant de fondement pour formuler des demandes au sein du système 4NK.
* **request**: Un champ encapsulant les détails de la demande, incluant le type, la version, et les références nécessaires pour l'identifier et la traiter présent dans les `PCD` et les `PRD`.
Il contient les attributs suivants :
* **item_name**: Optionnel, spécifie le nom de l'item concerné par la demande.
* **request_type**: Identifie le type de la demande, tel que mise à jour, confirmation, ou autre action spécifique.
* **version**: Indique la version de la demande, permettant de gérer la compatibilité et les mises à jour.
* **process_hash**: Référence au hash du processus ItemProcess concerné, établissant le contexte de la demande.
* **pcd_reference_hash et item_reference_hash**: Optionnels, fournissent des références aux PCD ou items spécifiques concernés par la demande.
### 3.4. <a name='StructureetFonctiondesPCD'></a>Structure et Fonction des PCD ### 3.4. <a name='StructureetFonctiondesPCD'></a>Structure et Fonction des PCD
#### 3.4.1. <a name='StructuredeBasedunPCD'></a>Structure de Base d'un PCD
`Item`: Chaque `PCD` est associé à un type d'`item` spécifique, définissant le contexte et la portée des informations qu'il contient.
`MetadataContractPublic`, `MetadataRoleConfidential`, `MetadataPrivate`: Ces métadonnées encapsulent les attributs des `items` au sein du `PCD`, classés selon leur niveau de confidentialité. Les métadonnées au sein des PCD jouent un rôle crucial en définissant le niveau de confidentialité et d'accès aux informations contractuelles. Elles permettent une segmentation claire des données selon qui peut y accéder et comment elles peuvent être utilisées.
#### 3.4.2. <a name='LattributdeslistesPcdItemGenericEncitem_list'></a>L'attribut des listes PcdItemGenericEnc `item_list` #### 3.4.2. <a name='LattributdeslistesPcdItemGenericEncitem_list'></a>L'attribut des listes PcdItemGenericEnc `item_list`
Chaque Item dit "Enc" pour chiffré est une représentation d'un objet de type `Item` mais avec les attributs chiffrés.
Ainsi voici la composition d'un item chiffré :
* **item_enc**: Représente l'encapsulation d'un item au sein d'un PCD, y compris les informations de version, le type d'item, et son nom. Cette structure est la base pour les attributs chiffrés de l'item.
* **pcd_item_enc_attribute_public_list**: Une liste d'attributs publics.
* **pcd_item_enc_attribute_role_confidential_list**: Contient les attributs chiffrés destinés à être accessibles uniquement par les membres ayant un rôle spécifique dans le processus.
* **pcd_item_enc_attribute_private_list**: Attributs chiffrés destinés uniquement au créateur de l'item ou à des parties spécifiquement autorisées.
Voir Specs - Exigences de sécurité pour le détail des niveaux de sécurité.
### 3.5. <a name='TypesdePRDetLeurFonction'></a>Types de PRD et Leur Fonction ### 3.5. <a name='TypesdePRDetLeurFonction'></a>Types de PRD et Leur Fonction
`RequestPrd`: Structure de base pour toutes les demandes, contenant des informations chiffrées essentielles pour l'interaction sécurisée entre les parties. `RequestPrd`: Structure de base pour toutes les demandes, contenant des informations chiffrées essentielles pour l'interaction sécurisée entre les parties.
@ -76,36 +47,14 @@ Voir Specs - Exigences de sécurité pour le détail des niveaux de sécurité.
#### 3.5.1. <a name='StructuredeRequestPrd'></a>Structure de RequestPrd #### 3.5.1. <a name='StructuredeRequestPrd'></a>Structure de RequestPrd
La structure RequestPrd sert de fondement pour tous les types de PRD, contenant les éléments suivants :
* **pcd_keys_role_confidential_list_enc_by_shared_secret**: Liste des clés de chiffrement pour les attributs roleConfidential, permettant un accès sécurisé aux informations nécessaires.
* **message_public, message_confidential, message_private**: Segments pour les messages, classés selon leur niveau de confidentialité, facilitant une communication sécurisée et ciblée.
* **sp_address_to, sp_address_from, sp_address_reply**: Adresses Silent Payment spécifiant l'origine, la destination, et la réponse pour la transaction, assurant l'anonymat et la sécurité des participants.
* **timestamp_declared**: Horodatage déclaré ne servant pas aux contrôles automatiques, fournissant un contexte temporel pour la demande qui peut être différent des horodatages automatiques.
* **role_name_from et role_name_to**: Spécifient les rôles des participants à la demande, renforçant le contrôle d'accès et la segmentation des autorisations pour des identités (adresses SP) ayant plusieurs roles différents.
##### RequestPrdList - Demande de Listes (PCD) ##### RequestPrdList - Demande de Listes (PCD)
RequestPrdList spécifie une demande pour obtenir une liste d`Item` sous forme de `PCD`.
###### Composition et Fonction
Basé sur le `RequestPrd`.
###### Cas d'utilisation
Utile pour les utilisateurs cherchant à consulter ou à explorer des listes de contrats, de membres, ou d'autres items dans le réseau. Utile pour les utilisateurs cherchant à consulter ou à explorer des listes de contrats, de membres, ou d'autres items dans le réseau.
##### RequestPrdMessage - Envoi de Messages ##### RequestPrdMessage - Envoi de Messages
Le RequestPrdMessage facilite l'envoi de messages sécurisés entre utilisateurs ou entre utilisateurs et processus/contrats. Le RequestPrdMessage facilite l'envoi de messages sécurisés entre utilisateurs ou entre utilisateurs et processus/contrats.
###### Composition et Fonction
Basé sur le `RequestPrd`.
###### Cas d'utilisation
Permet la communication directe et sécurisée au sein du réseau, supportant des échanges d'informations critiques ou des notifications entre parties. Permet la communication directe et sécurisée au sein du réseau, supportant des échanges d'informations critiques ou des notifications entre parties.
Les `PRDMessage` répondent aux `PRDMessage`. Les `PRDMessage` répondent aux `PRDMessage`.
@ -114,21 +63,8 @@ Les `PRDMessage` répondent aux `PRDMessage`.
`RequestPrdUpdate` est conçu pour demander des mises à jour des listes via des nouvelles versions de `PCD`. `RequestPrdUpdate` est conçu pour demander des mises à jour des listes via des nouvelles versions de `PCD`.
###### Composition et Fonction
Basé sur le `RequestPrd`. avec des additions pour spécifier les modifications demandées, y compris de nouveaux attributs ou valeurs à mettre à jour : Basé sur le `RequestPrd`. avec des additions pour spécifier les modifications demandées, y compris de nouveaux attributs ou valeurs à mettre à jour :
* **pcd_new_version_hash**: ,
* **payment_pcd_hash_list**: ,
* **cap_pcd_hash_list**: ,
* **deposit_pcd_hash_list**: ,
* **commitment_pcd_hash_list**: ,
* **ask_payment_method**: ,
* **ask_deposit_method**: ,
* **ask_commitment_method**: ,
###### Cas d'utilisation
Essentiel pour les utilisateurs ou les processus nécessitant de mettre à jour des informations contractuelles ou des attributs d'items, assurant la pertinence et l'actualité des données dans le système. Essentiel pour les utilisateurs ou les processus nécessitant de mettre à jour des informations contractuelles ou des attributs d'items, assurant la pertinence et l'actualité des données dans le système.
Par exemple, mettre à jour la liste des membres permet d'ajouter de nouveaux utilisateurs sur un `process`, la mise à jour de la liste des `process` permettra de leur affecter un nouveau role. Par exemple, mettre à jour la liste des membres permet d'ajouter de nouveaux utilisateurs sur un `process`, la mise à jour de la liste des `process` permettra de leur affecter un nouveau role.
@ -139,14 +75,8 @@ Le RequestPrdConfirm est utilisé pour confirmer la réception et le traitement
Les `PRDList`, `PRDUpdate`, `PRDMessage`, `PRDResponse` et `PRDKeyHello` reçoivent systématiquement un `PRDConfirm` depuis leur réception par le destinataire. Les `PRDList`, `PRDUpdate`, `PRDMessage`, `PRDResponse` et `PRDKeyHello` reçoivent systématiquement un `PRDConfirm` depuis leur réception par le destinataire.
###### Composition et Fonction et code de confirmation
Basé sur le `RequestPrd`, incluant les informations de la demande originale nécessitant confirmation.
`code_confirm_enc_by_shared_secret`: Un code de confirmation chiffré qui valide l'authenticité et l'intégrité de la réponse, assurant que la confirmation est sécurisée et provient de la source attendue. Dans ce cas un output spécifique chiffré par la clé `KeyConfidential` précise ce code, à confirmer dans le PRDConfirm. `code_confirm_enc_by_shared_secret`: Un code de confirmation chiffré qui valide l'authenticité et l'intégrité de la réponse, assurant que la confirmation est sécurisée et provient de la source attendue. Dans ce cas un output spécifique chiffré par la clé `KeyConfidential` précise ce code, à confirmer dans le PRDConfirm.
###### Cas d'utilisation
Crucial pour les processus qui nécessitent une confirmation explicite de réception ou d'acceptation, comme la finalisation d'une transaction ou la validation d'un changement d'état dans un contrat. Crucial pour les processus qui nécessitent une confirmation explicite de réception ou d'acceptation, comme la finalisation d'une transaction ou la validation d'un changement d'état dans un contrat.
##### RequestPrdResponse - Répondre à une Demande ##### RequestPrdResponse - Répondre à une Demande
@ -155,20 +85,6 @@ Le RequestPrdResponse permet de répondre spécifiquement à des PRD reçus, fac
Les PRDResponse répondent aux `PRDList`, `PRDUpdate`, `PRDKeyBackup` et `PRDKeyHello`. Les PRDResponse répondent aux `PRDList`, `PRDUpdate`, `PRDKeyBackup` et `PRDKeyHello`.
###### Composition et Fonction
Basé sur le `RequestPrd`, complété par :
* **sig_value**: Valeur de signature qui certifie l'authenticité de la réponse et de son émetteur.
* **pcd_origin_hash**: Optionnel, fournit une référence au PCD d'origine concerné par la réponse, si applicable.
* **payment_method_enc_by_shared_secret**: Détails sur la méthode ou l'action à prendre en réponse, chiffrée pour la sécurité par la clé `KeyConfidential`
* **deposit_method_enc_by_shared_secret**: Détails sur la méthode ou l'action à prendre en réponse, chiffrée pour la sécurité par la clé `KeyConfidential`
* **commitment_method_enc_by_shared_secret**: Détails sur la méthode ou l'action à prendre en réponse, chiffrée pour la sécurité par la clé `KeyConfidential`
* **certif_key_enc_by_shared_secret**: Détails sur la méthode ou l'action à prendre en réponse, chiffrée pour la sécurité par la clé `KeyConfidential`
* **shared_secret_key**: une clé secrète partagée via le `PRD`.
###### Cas d'utilisation
Utilisé pour fournir des feedbacks, des confirmations, ou des instructions supplémentaires en réponse à des demandes initiales, supportant une communication bidirectionnelle sécurisée et vérifiable. Utilisé pour fournir des feedbacks, des confirmations, ou des instructions supplémentaires en réponse à des demandes initiales, supportant une communication bidirectionnelle sécurisée et vérifiable.
Aussi le moyen de demander des moyens de paiement ou de dépot ou de preuve, puis de partager le payload de ces actions. Aussi le moyen de demander des moyens de paiement ou de dépot ou de preuve, puis de partager le payload de ces actions.
@ -177,28 +93,10 @@ Aussi le moyen de demander des moyens de paiement ou de dépot ou de preuve, pui
Le RequestPrdKeyHelloBakcup permet de demander la stockage de nouveaux shards associés à une `pre-id` . Le RequestPrdKeyHelloBakcup permet de demander la stockage de nouveaux shards associés à une `pre-id` .
###### Composition et Fonction
Basé sur le `RequestPrd`, complété par :
* **device_footprint_enc_by_sp_shared_secret**: String,
* **part_1_enc_hash_enc_by_sp_shared_secret**: String,
* **shard_enc_by_sp_shared_secret**: String,
###### Cas d'utilisation
##### RequestPrdKeyHello - Échange de Clés et d'Identités ##### RequestPrdKeyHello - Échange de Clés et d'Identités
RequestPrdKeyHello est conçu pour initier ou répondre à des demandes d'échange de clés ou d'informations d'identité, essentiel pour la gestion sécurisée des accès et des identités au sein du réseau. RequestPrdKeyHello est conçu pour initier ou répondre à des demandes d'échange de clés ou d'informations d'identité, essentiel pour la gestion sécurisée des accès et des identités au sein du réseau.
###### Composition et Fonction
Basé sur le `RequestPrd`, complété par :
* **part_1_enc_hash_enc_by_sp_shared_secret**: La première partie de la clé ou de l'identité, chiffrée avec le mot de passe en `pré-id`.
###### Cas d'utilisation
Important pour les processus d'onboarding de nouveaux membres, de réinitialisation des accès, ou de renouvellement des clés, facilitant une intégration sécurisée et la mise à jour des identités dans le réseau. Important pour les processus d'onboarding de nouveaux membres, de réinitialisation des accès, ou de renouvellement des clés, facilitant une intégration sécurisée et la mise à jour des identités dans le réseau.
## 4. <a name='GestionetchangedesDocuments'></a>Gestion et Échange des Documents ## 4. <a name='GestionetchangedesDocuments'></a>Gestion et Échange des Documents