WIP (doc)

This commit is contained in:
NicolasCantu 2024-02-16 18:15:04 +01:00
parent 664e50775f
commit ea801d3b6e
12 changed files with 96 additions and 79 deletions

View File

@ -33,7 +33,7 @@ Ce système couvrira la conception et le développement de l'architecture d'auth
## 3. <a name='Documentsderfrence'></a>Documents de référence
Voir [Doc_references.md](Doc_references.md).
Voir [_Doc_references.md](_Doc_references.md).
## 4. <a name='Authentificationdesutilisateurs'></a>Authentification des utilisateurs

View File

@ -24,7 +24,7 @@
## 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).
### 3.1. <a name='TypesdItems'></a>Types d'Items

View File

@ -60,7 +60,7 @@ Ce document concerne les messages de type `Message` et de type `MessageConnect`
## 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).
## 4. <a name='4.VariableSharedPeerListduSDKWasm'></a>## 4. Variable `SharedPeerList` du SDK (Wasm)

View File

@ -52,7 +52,7 @@ La spécification couvre la conception, le développement, et l'application prat
## 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).
## 4. <a name='CommunauxRequestPcdetRequestPrd'></a>Commun aux `RequestPcd` et RequestPrd
@ -92,10 +92,10 @@ Les `Item` ainsi échangés via les `RequestPcd` sont vérifiés par les `Reques
La création d'un `RequestPcd` suit plusieurs étapes :
1. **Chargement de la dernière version de la liste ( RequestPcd)**: Récupération de la dernière version de la liste du type d'`Item` à partir de la source de données, telle qu'une base de données ou un système de stockage.
2. **Mise à jour**: Ajouts et modifications eventuelles des `Item`
3. **Chiffrement des attributs**: Chiffrement des attributs de chaque Item selon les règles de confidentialité et de partage des clés (cf. [Specs-Security.md](Specs-Security.md)).
4. **Chiffrement du RequestPcd**: Chiffrement du `RequestPcd` avec la clé `ProcessKey` du `ItemProcess` concerné.
1. Récupération de la dernière version de la liste du type d'`Item` à partir de la source de données, telle qu'une base de données ou un système de stockage.
2. Ajouts et modifications eventuelles des `Item`
3. Chiffrement des attributs de chaque Item selon les règles de confidentialité et de partage des clés (cf. [Specs-Security.md](Specs-Security.md)).
4. Chiffrement du `RequestPcd` avec la clé `ProcessKey` du `ItemProcess` concerné.
5. Traitements communs aux `RequestPcd` et RequestPrd
### 5.2. <a name='Rception-1'></a>Réception
@ -146,15 +146,16 @@ Tous les échanges sont complétés de l'empreinte du device de l'emetteur envoy
La création d'un `RequestPrd` suit plusieurs étapes :
1. **Chargement des clés de chiffrement confidentiel'**: Récupération des clés de chiffrement confidentiel des attributs des items d'un RequestPcd.
2. **Chiffrement du RequestPrd**: Chiffrement du `RequestPrd` avec la clé `ProcessKey` du `ItemProcess` concerné.
3. **Création de l'adresse SP**: Création d'une`adresse SP` SP pour le partage de la `KeyConfidential` et pour l'horodatage du hash du `RequestPrd` dans la side chain.
4. **Création du message**: Création du `message` contenant le `RequestPrd` chiffré, la preuve de travail, l'adresse de faucet
5. **Sélection des relais pour le message**: Sélection de 4 relais pour le message selon l'historique des pings et des réponses retournées.
6. **Sélection des noeuds de signet pour la transaction silent Payment (SP) \***: (Sauf `RequestPRDKeyBackup`) Sélection de 4 noeuds de signet pour l'envoi de la`transaction SP`.
7. **Chiffrement des données confidentielles du `request_prd`**: Chiffrement des données confidentielles du `request_prd` avec la `KeyConfidential` de la`transaction SP`.
8. **Envoi du message**: Envoi du message aux relais
9. **Envoi de la transaction**: envoi de la transaction aux noeuds de signet à travers un `RequestPrdMessage` pour la publication de la`transaction SP` avec le hash du `RequestPrd` dans l'attribut `request_prd_reference_hash`.
1. Récupération des clés de chiffrement confidentiel des attributs des items d'un RequestPcd.
2. Chiffrement du `RequestPrd` avec la clé `ProcessKey` du `ItemProcess` concerné.
3. Création d'une`adresse SP` SP pour le partage de la `KeyConfidential` et pour l'horodatage du hash du `RequestPrd` dans la side chain.
4. Création du `message` contenant le `RequestPrd` chiffré, la preuve de travail, l'adresse de faucet
5. Sélection de 4 relais pour le message selon l'historique des pings et des réponses retournées.
6. Sélection de 4 noeuds de signet pour l'envoi de la`transaction SP`.
7. Chiffrement des données confidentielles du `request_prd` avec la `KeyConfidential` de la`transaction SP`.
8. Envoi du message aux relais
9. Envoi de la transaction aux noeuds de signet à travers un `RequestPrdMessage` pour la publication de la`transaction SP` avec le hash du `RequestPrd` dans l'attribut `request_prd_reference_hash`.
10. Mis à jour du cache avec les nouveaux `RequestPrd` envoyé (pas de mis en cache du `RequestPrdMessage`)
Voir [Silent-Payment-Specs.md](Silent-Payment-Specs.md).
@ -170,8 +171,9 @@ La réception d'un `RequestPcd` suit plusieurs étapes :
6. Recherche de l'`Item` associé via `item_reference_hash` et attente si nécessaire et traitement de celui ci.
7. (Sauf `RequestPRDKeyBackup`) Déchiffrage des attributs confidentiels notés `<attribut>_enc_by_shared_secret` depuis la `KeyConfidential` de la`transaction SP` correspondante via hash du `RequestPrd` dans l'output `2` de la transaction.
8. Mise à jour du cache pour les traitement des RequestPrd.
9. Validation des conditions définies dans le `ItemProcess` pour ce d'`Item` avec le `Role` correspondant dans le `ItemProcess` et dans ce rôles les conditions pour ce type de `RequestPrd` (dans l'attribut `request_prd_type`) telles que définies dans [Specs-Process-Roles-Specs.md](Specs-Process-Roles-Specs.md).
10. Traitements spécifiques au type de RequestPrd.
9. Voir `RequestPrdConfirm` création et envoi (sauf pour les `RequestPrdConfirm` et les `RequestPrdKeyBackup` et les `RequestPrdMessage` ayant un `raw_transaction_list` non vide).
10. Validation des conditions définies dans le `ItemProcess` pour ce d'`Item` avec le `Role` correspondant dans le `ItemProcess` et dans ce rôles les conditions pour ce type de `RequestPrd` (dans l'attribut `request_prd_type`) telles que définies dans [Specs-Process-Roles-Specs.md](Specs-Process-Roles-Specs.md).
11. Traitements spécifiques au type de RequestPrd.
## 7. <a name='RequestPrdList-DemandedeListesRequestPcd'></a>RequestPrdList - Demande de Listes ( RequestPcd)
@ -179,20 +181,18 @@ Utile pour les utilisateurs cherchant à consulter ou à explorer des listes de
### 7.1. <a name='Crationetenvoi-1'></a>Création et envoi
Traitements des `RequestPrd`, avec le `type_request` spécifique à `RequestPrdList`.
1. Traitements des `RequestPrd`, avec le `type_request` spécifique à `RequestPrdList` et envoi vers tous les `members` concernés par le `ItemProcess` pour le `Role` correspondant dans le `item_name`
2. Attente du `RequestPrdResponse` avec le `RequestPcd` demandés.
3. voir `RequestPrdResponse` réception.
4. Voir `RequestPcd` réception.
### 7.2. <a name='Rception-1'></a>Réception
La réception d'un `RequestPrdList` suit plusieurs étapes :
1. Traitements des `RequestPrd`
2. Création et envoi d'un `RequestPrdConfirm` pour confirmer la réception du `RequestPrdList` et envoie de la`transaction SP` associée avec
3. Recherche en cache de la dernière version de la liste du type d'`Item` concerné.
4. Création et envoi d'un `RequestPcd` avec la dernière version de la liste du type d'`Item` concerné.
5. Création et envoi à l'émetteur du `RequestPrdList` d'un `RequestPrdRResponse` avec :
5.1. le hash du `RequestPcd` envoyé dans l'attribut `RequestPcd_reference_hash`
5.2. le hash du `RequestPrdList` reçu dans l'attribut `request_prd_origin_hash`
6. Mise à jour du cache avec les nouveaux `RequestPcd` et `RequestPrdResponse` et `RequestPrdConfirm` envoyés.
2. Recherche en cache de la dernière version de la liste du type d'`Item` concerné.
3. Voir `RequestPcd` Création et envoi vers l'émetteur du `RequestPrdList`.
## 8. <a name='RequestPrdMessage-EnvoideMessages'></a>RequestPrdMessage - Envoi de Messages
@ -206,17 +206,17 @@ Les `RequestPrdMessage` répondent aux `RequestPrdMessage` sauf en cas d'envoi d
### 8.1. <a name='Crationetenvoi-1'></a>Création et envoi
Traitements des `RequestPrd`, avec le `type_request` spécifique à `RequestPrdMessage`.
1. Traitements des `RequestPrd`, avec le `type_request` spécifique à `RequestPrdMessage` vers l'emméteur du `RequestPrdMessage`.
2. Attente du `RequestPrdMessage` éventuel (sauf en cas d'envoi d'une `transaction SP`).
3. Le cas échéant : voir `RequestPrdMessage` Réception
### 8.2. <a name='Rception-1'></a>Réception
La réception d'un `RequestPrdMessage` suit plusieurs étapes :
1. Traitements des `RequestPrd`
2. Création et envoi d'un `RequestPrdConfirm` pour confirmer la réception du `RequestPrdList`.
3. Notificaiton et attente du retour de l'utilisateur (valeur de la signature et message de réponse)
4. Le cas échéant : création et envoi à l'émetteur du `RequestPrdMessage` d'un `RequestPrdMessage` avec :
5.1. le hash du `RequestPrdMessage` reçu dans l'attribut `request_prd_origin_hash`
2. Notification et attente du retour de l'utilisateur (valeur de la signature et message de réponse)
3. Le cas échéant : voir `RequestPrdMessage` création et envoi vers l'emméteur du `RequestPrdMessage`.
## 9. <a name='RequestPrdUpdate-MisesJourdeRequestPcd'></a>RequestPrdUpdate - Mises à Jour de RequestPcd
@ -232,10 +232,20 @@ Les `RequestPrdUpdate` signalent au réseau via l'attribut `RequestPcd_new_versi
### 9.1. <a name='Crationetenvoi-1'></a>Création et envoi
Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdUpdate`.
1. Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdUpdate`, création d'une nouvelle version de `RequestPcd` et envoi (vers tous les `members` concernés par le `ItemProcess` pour le `Role` correspondant dans le `item_name`)
2. Attente des `RequestPrdResponse` de l'ensemble des `members` concernés (`Role` correspondant dans le `ItemProcess` ).
3. Voir `RequestPrdResponse` Réception
4. Voir `RequestPcd` Réception.
### 9.2. <a name='Rception-1'></a>Réception
La réception d'un `RequestPrdUpdate` suit plusieurs étapes :
1. Traitements des `RequestPrd`
2. Notification et attente du retour de l'utilisateur (valeur de la signature et message de réponse)
3. Voir `RequestPrdResponse` création et envoi vers tous les membres de tous les roles du `ItemProcess`.
## 10. <a name='RequestPrdConfirm-ConfirmationdeRception'></a>RequestPrdConfirm - Confirmation de Réception
Le `RequestPrdConfirm` est utilisé pour confirmer la réception et le traitement de demandes ou de transactions, jouant un rôle crucial dans la validation des actions au sein du réseau.
@ -246,10 +256,12 @@ Les `RequestPrdList`, `RequestPrdUpdate`, `RequestPrdMessage`, `RequestPrdRespon
### 10.1. <a name='Crationetenvoi-1'></a>Création et envoi
Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdConfirm`.
1. Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdConfirm` envoi vers l'emméteur du `RequestPrd`.
### 10.2. <a name='Rception-1'></a>Réception
Traitements des `RequestPrd`, pas de traitement suppplémentaire.
## 11. <a name='RequestPrdResponse-RpondreuneDemande'></a>RequestPrdResponse - Répondre à une Demande
Le `RequestPrdResponse` permet de répondre spécifiquement à des `RequestPrd` reçus, facilitant un échange interactif d'informations ou de décisions entre les parties.
@ -262,11 +274,15 @@ Aussi le moyen de demander des moyens de paiement ou de dépot ou de preuve, pui
### 11.1. <a name='Crationetenvoi-1'></a>Création et envoi
Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdResponse`.
1. Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdResponse` et envoi en fonction du type de `RequestPrd` d'origine.
2. Pas de traitement supplémentaire.
### 11.2. <a name='Rception-1'></a>Réception
## 12. <a name='RequestPrdKeyHelloBakcup'></a>RequestPrdKeyHelloBakcup
1. Traitements des `RequestPrd`
2. Notification de l'utilisateur.
## 12. <a name='RequestPrdKeyHelloBakcup'></a>RequestPrdKeyBakcup
Le RequestPrdKeyHelloBakcup permet de demander la stockage de nouveaux shards associés à une `pre-id` .
@ -292,5 +308,6 @@ Traitements des RequestPrd, avec le `type_request` spécifique à `RequestPrdKey
## 15. <a name='Todo'></a>Todo
* [ ] Extraits de code illustrant l'utilisation des `RequestPcd` et `RequestPrd` dans des scénarios réels.
* [ ] Ajouter un tableau : transaction SP, confirmation attendue, réponse attendue, création vers, réponse vers.
* [ ] Compléter RequestPrdKeyHelloBakcup et RequestPrdKeyHello
* [ ] Diagrammes de séquences

View File

@ -39,7 +39,7 @@ Cette section vise à présenter en détail les Documents de Contrat Portable (
## 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).
## 4. <a name='RlesetSous-Rles'></a>Rôles et Sous-Rôles

View File

@ -19,7 +19,7 @@
## 3. <a name='Documentsderfrence'></a>Documents de référence
Voir [Doc_references.md](Doc_references.md).
Voir [_Doc_references.md](_Doc_references.md).
## 4. <a name='Fontion'></a> Fontion

View File

@ -22,7 +22,7 @@
## 1. <a name='Documentsderfrence'></a>Documents de référence
Voir [Doc_references.md](Doc_references.md).
Voir [_Doc_references.md](_Doc_references.md).
## 2. <a name='Gestiondeserreurs'></a>Gestion des erreurs

View File

@ -15,7 +15,7 @@
## 1. <a name='Documentsderfrence'></a>Documents de référence
Voir [Doc_references.md](Doc_references.md).
Voir [_Doc_references.md](_Doc_references.md).
## 2. <a name='Spcifique4NK'></a>Spécifique 4NK

View File

@ -14,7 +14,7 @@
## 1. <a name='Documentsderfrence'></a>Documents de référence
Voir [Doc_references.md](Doc_references.md).
Voir [_Doc_references.md](_Doc_references.md).
## 2. <a name='Coderepository'></a>Code repository

View File

@ -17,7 +17,7 @@
## 1. <a name='Documentsderfrence'></a>Documents de référence
Voir [Doc_references.md](Doc_references.md).
Voir [_Doc_references.md](_Doc_references.md).
## 2. <a name='AESQuantumresistant'></a>AES & Quantum resistant

View File

@ -42,7 +42,7 @@
## 1. <a name='Documentsderfrence'></a>Documents de référence
Voir [Doc_references.md](Doc_references.md).
Voir [_Doc_references.md](_Doc_references.md).
## 2. <a name='Dtailsdeconception'></a>Détails de conception