simplification

This commit is contained in:
NicolasCantu 2024-02-14 16:01:15 +01:00
parent 12815c2c3d
commit f994e9cf55

View File

@ -170,45 +170,56 @@ Dans l'ordre on réalise donc les opérations suivantes pour chaque membres :
2. Création de `Message` du `PRDKeyBackup` à destination du membre.
3. Envoi de la transaction SP du `Message` du `PRDKeyBackup` à destination du membre.
4. Envoi du `Message` du `PRDKeyBackup` à destination du membre.
5. Atttente de la réception des `PRDResponse` en réponse aux `PRDKeyBackup` (confirmations).
6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `PRDResponse`.
6.1. Déchiffrement par le mot de passe de `Part1Enc` depuis le cache.
6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_enc_by_shared_secret` des `PRDResponse` de chaque member du role `Member`du process.
6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe
6.4. Concaténation de `Part1` et `Part2`
##### Étape d'`update` et envoi de l'objet `ItemMember` pour `Onboarding`
Pour être `onboard` dans un process, c'est-à-dire avoir un rôle, il faut s'ajouter dans la liste des membres du process.
Pour être `onboard` dans un process, c'est-à-dire avoir un rôle, il faut :
Cela signifie envoyer un `PRDUpdate` avec une nouvelle version du PCD de la liste des membres, contenant notre objet `ItemMember` complet. Ce PRD devra recevoir des membres du rôle `Member` du process les `PRDResponse` correspondant aux critères de validation du `process`.
1. s'ajouter (objet `Member`) dans la liste des membres et
2. s'ajouter son adresse SP dans les adresses d'un des rôles du process.
C'est à ce moment-là que l'on transmet toutes les clés privées dans l'objet `ItemMember`, en tant que donnée privée (chiffrée par la clé de dépense du signet) dans un PCD (et les `PRDUpdate` correspondant).
###### Mise à jour de la liste des membres
Pour mettre à jour la liste des membres il faut envoyer un `PRDUpdate` avec une nouvelle version du PCD de la liste des membres, contenant l'objet `ItemMember` complet aux membres du role `member`. Ce PRD devra recevoir des membres du rôle `Member` du process les `PRDResponse` correspondant aux critères de validation du `process`.
C'est à ce moment-là que l'on transmet toutes les clés privées dans l'objet `ItemMember`, en tant que `metadadata` privée (chiffrée par la clé de dépense du signet) dans un PCD (et les `PRDUpdate` correspondant).
Les adresses SP correspondantes sont aussi transmises en tant que données publiques, ainsi que l'adresse SP de la clé de dépense du login du signet.
Avant de choisir un process pour continuer l'update de la nouvelle identité :
L'`ItemMember` est décrit dans la spécification [Specs-Datamodel.md](Specs-Datamodel.md).
1. Scan `Nakamoto` des transactions, récupération dans les transactions SP sur Adresse `id_SP` de login du signet, lecture du `RequestHash` de l`output 3` correspondant aux `PRDResponse` à recevoir ou déjà reçus.
2. Réception des `PRDResponse` et contrôle de la valeur des signatures (`hash_sig_value`), attente du `validation_timeout` du rôle `Member` du `process` et validation ou non des `PRDKeyBackup`.
3. Attente et réception des `pcd_reference_hash` des `PRDResponse` reçus avec le PCD des membres du processus (liste de `itemMember`).
4. Recomposition de la clé selon :
4.1. Déchiffrement par le mot de passe de `Part1Enc` depuis le cache.
4.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_enc_by_shared_secret` des `PRDResponse` de chaque member du role `Member`du process.
4.3 Recomposition de `Part2Enc` et déchiffrement par le mot de passe
4.4 Concaténation de `Part1` et `Part2`
1. Création d'un `ItemMember` correspondant à l'utilisateur.
2. Création d'une nouvelle version du PCD avec l'ajout de l'`ItemMember` créé.
3. Création de `PRDKeyHello` à destination du membre.
4. Création de `Message` du `PRDKeyHello` à destination du membre.
5. Envoi de la transaction SP du `Message` du `PRDKeyHello` à destination du membre.
6. Envoi du `Message` du `PRDKeyHello` à destination du membre.
7. Réception des `PRDResponse` en réponse aux `PRDKeyHello` et mise à jour des listes depuis les `PCD` correspondants.
8. Attente de la validation (`PRDResponse`) du `PRDUpdate`.
Demande d'update de la liste des membres (PCD) d'un process (exemple avec 2 membres):
###### Mise à jour de la liste des process
1. Création et envoi des `PRDKeyHello`.
1.1. Création de `PRDKeyHello` à destination de membre 1 de la liste des membres (adresse SP) du rôle `Member` du `Process`.
1.2. Création de `PRDKeyHello` à destination de membre 2 de la liste des membres (adresse SP) du rôle `Member` du `Process`.
1.3. Création de `Message` du `PRDKeyHello` à destination de membre 1.
1.4. Création de `Message` du `PRDKeyHello` à destination de membre 2.
1.5. Envoi de la transaction SP du `Message` du `PRDKeyHello` à destination de membre 1.
1.6. Envoi de la transaction SP du `Message` du `PRDKeyHello` à destination de membre 2.
1.7. Envoi du `Message` du `PRDKeyHello` à destination de membre 1.
1.11. Envoi du `Message` du `PRDKeyHello` à destination de membre 2.
2. Réception des `PRDResponse` en réponse aux `PRDKeyHello` et mise à jour des listes depuis les `PCD` correspondants.
3. Création d'un `ItemMember` correspondant à l'utilisateur avec les clés chiffrées (hors clés de révocation) dans la partie data des métadonnées privées et les adresses SP dans les données publiques.
4. Création d'une nouvelle version du PCD avec l'ajout de l'`ItemMember` créé.
5. Parcours des membres du rôle `Member` et envoi des `PRDUpdate`.
6. Attente de la validation (`PRDResponse`) du `PRDUpdate`.
7. Redirection vers la page du process sur le relai.
Pour mettre à jour la liste des process il faut envoyer un `PRDUpdate` avec une nouvelle version du PCD de la liste des process, contenant l'objet `ItemProcess` complet aux membres du role `process`. Ce PRD devra recevoir des membres du rôle `Process` du process les `PRDResponse` correspondant aux critères de validation du `process`.
L'`ItemProcess` est décrit dans la spécification [Specs-Datamodel.md](Specs-Datamodel.md).
Demande d'update de la liste des membres (PCD) d'un process vers chaque membre du rôle `Member` du process.:
1. Création d'un `ItemProcess` correspondant à l'utilisateur.
2. Création d'une nouvelle version du PCD avec l'ajout de l'`ItemProcess` créé.
3. Création de `PRDKeyHello` à destination du membre.
4. Création de `Message` du `PRDKeyHello` à destination du membre.
5. Envoi de la transaction SP du `Message` du `PRDKeyHello` à destination du membre.
6. Envoi du `Message` du `PRDKeyHello` à destination du membre.
7. Réception des `PRDResponse` en réponse aux `PRDKeyHello` et mise à jour des listes depuis les `PCD` correspondants.
8. Attente de la validation (`PRDResponse`) du `PRDUpdate`.
9. Redirection vers la page du process sur le relai.
##### Clés de révocation (`revoke`)