updates (doc)
This commit is contained in:
parent
c00390822f
commit
7a1550811b
@ -1,25 +1,26 @@
|
|||||||
<!-- vscode-markdown-toc -->
|
<!-- vscode-markdown-toc -->
|
||||||
|
|
||||||
* 1. [Objectif](#Objectif)
|
* 1. [Objectif](#Objectif)
|
||||||
* 2. [Portée](#Porte)
|
* 2. [Portée](#Porte)
|
||||||
* 3. [Documents de référence](#Documentsderfrence)
|
* 3. [Documents de référence](#Documentsderfrence)
|
||||||
* 4. [Schématisation des processus](#Schmatisationdesprocessus)
|
* 4. [Schématisation des processus](#Schmatisationdesprocessus)
|
||||||
* 4.1. [Création d'une identité](#Crationduneidentit)
|
* 4.1. [Création d'une identité](#Crationduneidentit)
|
||||||
* 4.2. [Onboarding](#Onboarding)
|
* 4.2. [Onboarding](#Onboarding)
|
||||||
* 4.3. [Connexion avec une identité créée (`recover`)](#Connexionavecuneidentitcrerecover)
|
* 4.3. [Connexion avec une identité créée (`recover`)](#Connexionavecuneidentitcrerecover)
|
||||||
* 5. [Authentification des utilisateurs](#Authentificationdesutilisateurs)
|
* 5. [Authentification des utilisateurs](#Authentificationdesutilisateurs)
|
||||||
* 6. [Connexion via des tiers](#Connexionviadestiers)
|
* 6. [Connexion via des tiers](#Connexionviadestiers)
|
||||||
* 7. [Fonctionnalité de récupération de mot de passe](#Fonctionnalitdercuprationdemotdepasse)
|
* 7. [Fonctionnalité de récupération de mot de passe](#Fonctionnalitdercuprationdemotdepasse)
|
||||||
* 8. [Gestion de session basée sur un cache](#Gestiondesessionbasesuruncache)
|
* 8. [Gestion de session basée sur un cache](#Gestiondesessionbasesuruncache)
|
||||||
* 9. [Wallet](#Wallet)
|
* 9. [Wallet](#Wallet)
|
||||||
* 9.1. [Récupération des jetons de faucet](#Rcuprationdesjetonsdefaucet)
|
* 9.1. [Récupération des jetons de faucet](#Rcuprationdesjetonsdefaucet)
|
||||||
* 10. [Gestion des clés de l'identité (aussi les clés des transactions SP)](#GestiondesclsdelidentitaussilesclsdestransactionsSP)
|
* 10. [Gestion des clés de l'identité (aussi les clés des transactions SP)](#GestiondesclsdelidentitaussilesclsdestransactionsSP)
|
||||||
* 10.1. [Génération des clés privées (création des identités numériques)](#Gnrationdesclsprivescrationdesidentitsnumriques)
|
* 10.1. [Génération des clés privées (création des identités numériques)](#Gnrationdesclsprivescrationdesidentitsnumriques)
|
||||||
* 10.1.1. [Gestion de la clé servant à l'ID `spend_recover`](#GestiondelaclservantlIDspend_recover)
|
* 10.1.1. [Gestion de la clé servant à l'ID `spend_recover`](#GestiondelaclservantlIDspend_recover)
|
||||||
* 10.1.2. [Backup de `Part2Enc`](#BackupdePart2Enc)
|
* 10.1.2. [Backup de `Part2Enc`](#BackupdePart2Enc)
|
||||||
* 10.1.3. [Onboarding](#Onboarding-1)
|
* 10.1.3. [Onboarding](#Onboarding-1)
|
||||||
* 10.2. [ItemMember complété des champs du process sélectionné et mise à jour de la liste des membres du process](#ItemMembercompltdeschampsduprocessslectionnetmisejourdelalistedesmembresduprocess)
|
* 10.2. [ItemMember complété des champs du process sélectionné et mise à jour de la liste des membres du process](#ItemMembercompltdeschampsduprocessslectionnetmisejourdelalistedesmembresduprocess)
|
||||||
* 10.3. [ItemProcess complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process](#ItemProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess)
|
* 10.3. [ItemProcess complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process](#ItemProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess)
|
||||||
* 10.4. [Réception des RequestPcd et RequestPrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)](#RceptiondesRequestPcdetRequestPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn)
|
* 10.4. [Réception des RequestPcd et RequestPrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)](#RceptiondesRequestPcdetRequestPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn)
|
||||||
* 11. [Clés de révocation (`revoke`)](#Clsdervocationrevoke)
|
* 11. [Clés de révocation (`revoke`)](#Clsdervocationrevoke)
|
||||||
* 12. [Clés de third parties](#Clsdethirdparties)
|
* 12. [Clés de third parties](#Clsdethirdparties)
|
||||||
* 13. [Connexions avec une identité crée (`recover`)](#Connexionsavecuneidentitcrerecover)
|
* 13. [Connexions avec une identité crée (`recover`)](#Connexionsavecuneidentitcrerecover)
|
||||||
@ -27,36 +28,37 @@
|
|||||||
* 15. [Todo](#Todo)
|
* 15. [Todo](#Todo)
|
||||||
|
|
||||||
<!-- vscode-markdown-toc-config
|
<!-- vscode-markdown-toc-config
|
||||||
numbering=true
|
numbering=true
|
||||||
autoSave=true
|
autoSave=true
|
||||||
/vscode-markdown-toc-config -->
|
/vscode-markdown-toc-config -->
|
||||||
|
|
||||||
<!-- /vscode-markdown-toc --># Auth - Specs
|
<!-- /vscode-markdown-toc --># Auth - Specs
|
||||||
|
|
||||||
## 1. <a name='Objectif'></a>Objectif
|
## 1. <a name='Objectif'></a>Objectif
|
||||||
|
|
||||||
Développer un système de login sécurisé utilisant les clés cryptographiques de Bitcoin et sa timechain (via un réseau Signet personnalisé, appelé "side chain") ainsi qu'un système de relais de messages entre parties prenantes. Le concept de Silent Payment est employé pour authentifier les utilisateurs sans réutilisation d'adresses, tout en utilisant une approche de `calcul multipartite (MPC)` pour une gestion sécurisée et distribuée des clés. Déployer une interface de login conforme aux wireframes :
|
Développer un système de login sécurisé utilisant les clés cryptographiques de Bitcoin et sa timechain (via un réseau Signet personnalisé, appelé "side chain") ainsi qu'un système de relais de messages entre parties prenantes. Le concept de Silent Payment est employé pour authentifier les utilisateurs sans réutilisation d'adresses, tout en utilisant une approche de `calcul multipartite (MPC)` pour une gestion sécurisée et distribuée des clés. Déployer une interface de login conforme aux wireframes :
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 2. <a name='Porte'></a>Portée
|
## 2. <a name='Porte'></a>Portée
|
||||||
|
|
||||||
Ce système couvrira la conception et le développement de l'architecture d'authentification, incluant la génération, la gestion, et la validation des identités numériques à travers des formats de conformité spécifiques (Portable Contract Document et Portable Request Document). Il intégrera également l'authentification des utilisateurs, la connexion via des tiers, la récupération d'identités, et une gestion de session basée sur un cache avec des contraintes de sécurité renforcées. La solution sera conçue pour des environnements hautement sécurisés, nécessitant une haute disponibilité, performance, et évolutivité.
|
Ce système couvrira la conception et le développement de l'architecture d'authentification, incluant la génération, la gestion, et la validation des identités numériques à travers des formats de conformité spécifiques (Portable Contract Document et Portable Request Document). Il intégrera également l'authentification des utilisateurs, la connexion via des tiers, la récupération d'identités, et une gestion de session basée sur un cache avec des contraintes de sécurité renforcées. La solution sera conçue pour des environnements hautement sécurisés, nécessitant une haute disponibilité, performance, et évolutivité.
|
||||||
|
|
||||||
## 3. <a name='Documentsderfrence'></a>Documents de référence
|
## 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='Schmatisationdesprocessus'></a>Schématisation des processus
|
## 4. <a name='Schmatisationdesprocessus'></a>Schématisation des processus
|
||||||
|
|
||||||
### 4.1. <a name='Crationduneidentit'></a>Création d'une identité
|
### 4.1. <a name='Crationduneidentit'></a>Création d'une identité
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 4.2. <a name='Onboarding'></a>Onboarding
|
### 4.2. <a name='Onboarding'></a>Onboarding
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 4.3. <a name='Connexionavecuneidentitcrerecover'></a>Connexion avec une identité créée (`recover`)
|
### 4.3. <a name='Connexionavecuneidentitcrerecover'></a>Connexion avec une identité créée (`recover`)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@ -72,7 +74,7 @@ Voir [_Doc_references.md](_Doc_references.md).
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 5. <a name='Authentificationdesutilisateurs'></a>Authentification des utilisateurs
|
## 5. <a name='Authentificationdesutilisateurs'></a>Authentification des utilisateurs
|
||||||
|
|
||||||
Les utilisateurs doivent pouvoir s'authentifier en utilisant un mot de passe et les données `exif` d'une image dite de login mise en cache dans IndexedDB pour les navigateurs et les applications mobiles, sinon en mémoire pour tous autres dispositifs dont l'IoT et une partie venant de membres choisi par les gestionnaires des membres des `ItemProcess` .
|
Les utilisateurs doivent pouvoir s'authentifier en utilisant un mot de passe et les données `exif` d'une image dite de login mise en cache dans IndexedDB pour les navigateurs et les applications mobiles, sinon en mémoire pour tous autres dispositifs dont l'IoT et une partie venant de membres choisi par les gestionnaires des membres des `ItemProcess` .
|
||||||
|
|
||||||
@ -82,23 +84,23 @@ Les utilisateurs sont reconnus par une`adresse SP` dans un ou plusieurs rôles d
|
|||||||
|
|
||||||
Chaque relais permet d'accéder à la liste des process, de créer, recomposer (`recover`) et révoquer (`revoke`) une identité, et de la compléter par `ItemProcess` dans lequel l'utilisateur a un rôle (`onboarding`).
|
Chaque relais permet d'accéder à la liste des process, de créer, recomposer (`recover`) et révoquer (`revoke`) une identité, et de la compléter par `ItemProcess` dans lequel l'utilisateur a un rôle (`onboarding`).
|
||||||
|
|
||||||
## 6. <a name='Connexionviadestiers'></a>Connexion via des tiers
|
## 6. <a name='Connexionviadestiers'></a>Connexion via des tiers
|
||||||
|
|
||||||
Le système offrira la possibilité de se connecter via des services tiers (tels que OAuth2, avec Google, GitHub, etc.), permettant une intégration fluide avec les écosystèmes existants sans dégrader l'expérience utilisateur.
|
Le système offrira la possibilité de se connecter via des services tiers (tels que OAuth2, avec Google, GitHub, etc.), permettant une intégration fluide avec les écosystèmes existants sans dégrader l'expérience utilisateur.
|
||||||
|
|
||||||
Pour cela, les flux de 4NK agissent en "proxy" transparent devant les flux API des services concernés, et les tokens d'accès sont ajoutés aux données de `member`. En parrallèle des flux existant, les hash des requêtes API et de leurs réponses sont signés des clés des parties prenantes pour une vérification de la conformité des données par rapport aux `ItemProcess` 4NK.
|
Pour cela, les flux de 4NK agissent en "proxy" transparent devant les flux API des services concernés, et les tokens d'accès sont ajoutés aux données de `member`. En parrallèle des flux existant, les hash des requêtes API et de leurs réponses sont signés des clés des parties prenantes pour une vérification de la conformité des données par rapport aux `ItemProcess` 4NK.
|
||||||
|
|
||||||
## 7. <a name='Fonctionnalitdercuprationdemotdepasse'></a>Fonctionnalité de récupération de mot de passe
|
## 7. <a name='Fonctionnalitdercuprationdemotdepasse'></a>Fonctionnalité de récupération de mot de passe
|
||||||
|
|
||||||
En cas d'oubli de mot de passe, les utilisateurs pourront récupérer leur accès depuis une nouvelle identité (`recover`) après avoir révoqué l'ancienne identité, via un processus sécurisé, impliquant une vérification d'identité et l'échange de secrets chiffrés conformément aux protocoles établis.
|
En cas d'oubli de mot de passe, les utilisateurs pourront récupérer leur accès depuis une nouvelle identité (`recover`) après avoir révoqué l'ancienne identité, via un processus sécurisé, impliquant une vérification d'identité et l'échange de secrets chiffrés conformément aux protocoles établis.
|
||||||
|
|
||||||
Une image de révocation est générée à la création d'une identité pour pouvoir dépenser un UTXO dit alors de révocation, avec les flux `RequestPcd` et `RequestPrd` correspondants.
|
Une image de révocation est générée à la création d'une identité pour pouvoir dépenser un UTXO dit alors de révocation, avec les flux `RequestPcd` et `RequestPrd` correspondants.
|
||||||
|
|
||||||
## 8. <a name='Gestiondesessionbasesuruncache'></a>Gestion de session basée sur un cache
|
## 8. <a name='Gestiondesessionbasesuruncache'></a>Gestion de session basée sur un cache
|
||||||
|
|
||||||
Le système ne maintiendra pas de session traditionnelle sur le serveur. La navigation de l'utilisateur persiste grâce à un cache local dans IndexedDB ou en mémoire, avec une politique de sécurité stricte forçant la resaisie du mot de passe après un rafraîchissement de la page ou une inactivité prolongée, déterminée par une durée maximale sans login.
|
Le système ne maintiendra pas de session traditionnelle sur le serveur. La navigation de l'utilisateur persiste grâce à un cache local dans IndexedDB ou en mémoire, avec une politique de sécurité stricte forçant la resaisie du mot de passe après un rafraîchissement de la page ou une inactivité prolongée, déterminée par une durée maximale sans login.
|
||||||
|
|
||||||
## 9. <a name='Wallet'></a>Wallet
|
## 9. <a name='Wallet'></a>Wallet
|
||||||
|
|
||||||
Les transactions SP ont besoin de 2 clés privées Bitcoin, l'une critique sur la dépense des jetons, l'autre qui lève la confidentialité (partageable dans certains cas) :
|
Les transactions SP ont besoin de 2 clés privées Bitcoin, l'une critique sur la dépense des jetons, l'autre qui lève la confidentialité (partageable dans certains cas) :
|
||||||
|
|
||||||
@ -127,7 +129,7 @@ Dans l'ordre on génère donc :
|
|||||||
5. Clé privée de dépense mainnet `spend_mainnet`.
|
5. Clé privée de dépense mainnet `spend_mainnet`.
|
||||||
6. Clé privée de scan du mainnet `scan_mainnet`.
|
6. Clé privée de scan du mainnet `scan_mainnet`.
|
||||||
|
|
||||||
### 9.1. <a name='Rcuprationdesjetonsdefaucet'></a>Récupération des jetons de faucet
|
### 9.1. <a name='Rcuprationdesjetonsdefaucet'></a>Récupération des jetons de faucet
|
||||||
|
|
||||||
Le relais retournent des jetons à la connexion et à l'envoi de messages afin de créer les `UTXO` nécessaires pour les transactions SP.
|
Le relais retournent des jetons à la connexion et à l'envoi de messages afin de créer les `UTXO` nécessaires pour les transactions SP.
|
||||||
|
|
||||||
@ -137,11 +139,11 @@ A chaque nouveau message il génère de nouvelles addresses pour la clé qui va
|
|||||||
|
|
||||||
Ces adresses apparaîtront dans l'attribut `faucet_sp_address` des messages envoyés aux relais.
|
Ces adresses apparaîtront dans l'attribut `faucet_sp_address` des messages envoyés aux relais.
|
||||||
|
|
||||||
## 10. <a name='GestiondesclsdelidentitaussilesclsdestransactionsSP'></a>Gestion des clés de l'identité (aussi les clés des transactions SP)
|
## 10. <a name='GestiondesclsdelidentitaussilesclsdestransactionsSP'></a>Gestion des clés de l'identité (aussi les clés des transactions SP)
|
||||||
|
|
||||||
### 10.1. <a name='Gnrationdesclsprivescrationdesidentitsnumriques'></a>Génération des clés privées (création des identités numériques)
|
### 10.1. <a name='Gnrationdesclsprivescrationdesidentitsnumriques'></a>Génération des clés privées (création des identités numériques)
|
||||||
|
|
||||||
#### 10.1.1. <a name='GestiondelaclservantlIDspend_recover'></a>Gestion de la clé servant à l'ID `spend_recover`
|
#### 10.1.1. <a name='GestiondelaclservantlIDspend_recover'></a>Gestion de la clé servant à l'ID `spend_recover`
|
||||||
|
|
||||||
Les clés font 256 bits.
|
Les clés font 256 bits.
|
||||||
|
|
||||||
@ -150,7 +152,7 @@ La clé privée `spend_recover` est la clé principale pour forger les identité
|
|||||||
Cette clé est d'abord décomposée, avant d'être partiellement distribuée. Voici les principales étapes :
|
Cette clé est d'abord décomposée, avant d'être partiellement distribuée. Voici les principales étapes :
|
||||||
|
|
||||||
1. Cette clé sera scindée en 2 parties (à la moitié de la longueur de leur représentation hexadécimale) :
|
1. Cette clé sera scindée en 2 parties (à la moitié de la longueur de leur représentation hexadécimale) :
|
||||||
|
|
||||||
1.1. `Part1`, de 128 bits c'est la partie qui sera chiffrée (AES-GCM 256 bits) par
|
1.1. `Part1`, de 128 bits c'est la partie qui sera chiffrée (AES-GCM 256 bits) par
|
||||||
le mot de passe "hashé" (SHA-256 d'un scrytp)
|
le mot de passe "hashé" (SHA-256 d'un scrytp)
|
||||||
etc une seed de générée aléatoirement de 256 bits avec (concaténé)
|
etc une seed de générée aléatoirement de 256 bits avec (concaténé)
|
||||||
@ -188,9 +190,9 @@ pre_id=sha256(part1_spend_recover_enc, MDP)
|
|||||||
```
|
```
|
||||||
|
|
||||||
3. Création d'un `RequestPrdList` par membre (1 shard par membre), par `RequestPrd` :
|
3. Création d'un `RequestPrdList` par membre (1 shard par membre), par `RequestPrd` :
|
||||||
|
|
||||||
3.1. Génération d'une clé de chiffrement dite `sp_shared_secret` qui sera transmise dans le Diffie-Hellman de la transaction SP.
|
3.1. Génération d'une clé de chiffrement dite `sp_shared_secret` qui sera transmise dans le Diffie-Hellman de la transaction SP.
|
||||||
|
|
||||||
3.2. Création d'un `ItemMember` à envoyer avec le `RequestPrdList`.
|
3.2. Création d'un `ItemMember` à envoyer avec le `RequestPrdList`.
|
||||||
|
|
||||||
4. Création des messages de type `Message` correspondant aux RequestPrd, envoi des messages aux relais connectés.
|
4. Création des messages de type `Message` correspondant aux RequestPrd, envoi des messages aux relais connectés.
|
||||||
@ -204,7 +206,7 @@ Dans l'ordre on réalise donc les opérations suivantes donc :
|
|||||||
5. Chiffrement AES de `Part2`.
|
5. Chiffrement AES de `Part2`.
|
||||||
6. Sharding de `Part2Enc`.
|
6. Sharding de `Part2Enc`.
|
||||||
|
|
||||||
#### 10.1.2. <a name='BackupdePart2Enc'></a>Backup de `Part2Enc`
|
#### 10.1.2. <a name='BackupdePart2Enc'></a>Backup de `Part2Enc`
|
||||||
|
|
||||||
Les relais initialisent le SDK (Wasm) par défaut avec une liste `SharedProcessList` de `SharedProcess` contenant l'`ItemProcess` choisi.
|
Les relais initialisent le SDK (Wasm) par défaut avec une liste `SharedProcessList` de `SharedProcess` contenant l'`ItemProcess` choisi.
|
||||||
|
|
||||||
@ -218,14 +220,14 @@ Dans l'ordre on réalise donc les opérations suivantes pour chaque membres :
|
|||||||
4. Envoi du `Message` du `RequestPrdList` à destination du membre.
|
4. Envoi du `Message` du `RequestPrdList` à destination du membre.
|
||||||
5. Atttente de la réception des `RequestPrdResponse` en réponse aux `RequestPrdList` (confirmations).
|
5. Atttente de la réception des `RequestPrdResponse` en réponse aux `RequestPrdList` (confirmations).
|
||||||
6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPrdResponse`.
|
6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPrdResponse`.
|
||||||
6.1. Déchiffrement par le mot de passe de `Part1Enc` depuis le cache.
|
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 `RequestPrdResponse` de chaque member du `Role` `Member`du `ItemProcess`.
|
6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_enc_by_shared_secret` des `RequestPrdResponse` de chaque member du `Role` `Member`du `ItemProcess`.
|
||||||
6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe
|
6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe
|
||||||
6.4. Concaténation de `Part1` et `Part2`
|
6.4. Concaténation de `Part1` et `Part2`
|
||||||
|
|
||||||
#### 10.1.3. <a name='Onboarding-1'></a>Onboarding
|
#### 10.1.3. <a name='Onboarding-1'></a>Onboarding
|
||||||
|
|
||||||
### 10.2. <a name='ItemMembercompltdeschampsduprocessslectionnetmisejourdelalistedesmembresduprocess'></a>ItemMember complété des champs du process sélectionné et mise à jour de la liste des membres du process
|
### 10.2. <a name='ItemMembercompltdeschampsduprocessslectionnetmisejourdelalistedesmembresduprocess'></a>ItemMember complété des champs du process sélectionné et mise à jour de la liste des membres du process
|
||||||
|
|
||||||
Le role `member` de l'`itemProcess` sélectionné contient un `Item` avec des `metadata_contract_public`, `metadata_role_confidential` et `metadata_private` contenant chacun une `render_template_list` dont le premier élément du tableau est le formulaire de création de l'identité pour champs concernés (publiques ou confidentiels ou privés).
|
Le role `member` de l'`itemProcess` sélectionné contient un `Item` avec des `metadata_contract_public`, `metadata_role_confidential` et `metadata_private` contenant chacun une `render_template_list` dont le premier élément du tableau est le formulaire de création de l'identité pour champs concernés (publiques ou confidentiels ou privés).
|
||||||
|
|
||||||
@ -233,23 +235,23 @@ Ces formulaires permettront de créé les champs attendus par `condition_attribu
|
|||||||
|
|
||||||
Une fois l'`ItemMember` complété, il est ajouté à la liste des membres pour créer un nouveau `RequestPcd` envoyé pour mises à jours aux managers du rôle `Member` du `ItemProcess` sélectionné via un `RequestPrdUpdate`.
|
Une fois l'`ItemMember` complété, il est ajouté à la liste des membres pour créer un nouveau `RequestPcd` envoyé pour mises à jours aux managers du rôle `Member` du `ItemProcess` sélectionné via un `RequestPrdUpdate`.
|
||||||
|
|
||||||
### 10.3. <a name='ItemProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess'></a>ItemProcess complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process
|
### 10.3. <a name='ItemProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess'></a>ItemProcess complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process
|
||||||
|
|
||||||
Pour le ou les roles sélectionnés, l'attribut `request_prd_sp_address_list` de `condition_prd_address_set_list` est complété par l'adresse SP de l'utilisateur.
|
Pour le ou les roles sélectionnés, l'attribut `request_prd_sp_address_list` de `condition_prd_address_set_list` est complété par l'adresse SP de l'utilisateur.
|
||||||
|
|
||||||
Une fois l'`ItemProcess` complété, il est ajouté à la liste des membres pour créer un nouveau `RequestPcd` envoyé pour mises à jours aux managers du rôle `Process` du `ItemProcess` sélectionné via un `RequestPrdUpdate`.
|
Une fois l'`ItemProcess` complété, il est ajouté à la liste des membres pour créer un nouveau `RequestPcd` envoyé pour mises à jours aux managers du rôle `Process` du `ItemProcess` sélectionné via un `RequestPrdUpdate`.
|
||||||
|
|
||||||
### 10.4. <a name='RceptiondesRequestPcdetRequestPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn'></a>Réception des RequestPcd et RequestPrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)
|
### 10.4. <a name='RceptiondesRequestPcdetRequestPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn'></a>Réception des RequestPcd et RequestPrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)
|
||||||
|
|
||||||
Envoi d'un `RequestPrdList` pour chaque membre de chaque rôle du process sélectionné.
|
Envoi d'un `RequestPrdList` pour chaque membre de chaque rôle du process sélectionné.
|
||||||
|
|
||||||
## 11. <a name='Clsdervocationrevoke'></a>Clés de révocation (`revoke`)
|
## 11. <a name='Clsdervocationrevoke'></a>Clés de révocation (`revoke`)
|
||||||
|
|
||||||
Les clés de l'image de révocation sont chiffrées par le mot de passe (ou pas, en option) et stockées directement dans les données exifs de l'image de révocation. Les adresses SP correspondantes sont aussi inscrites dans les données exif.
|
Les clés de l'image de révocation sont chiffrées par le mot de passe (ou pas, en option) et stockées directement dans les données exifs de l'image de révocation. Les adresses SP correspondantes sont aussi inscrites dans les données exif.
|
||||||
|
|
||||||
L'envoi d'une révocation est identique à la création d'une nouvelle adresse via les `RequestPrdList` mais la transaction SP est envoyée depuis l'adresse de révocation (la clé aura dû être chargée au préalable depuis l'interface).
|
L'envoi d'une révocation est identique à la création d'une nouvelle adresse via les `RequestPrdList` mais la transaction SP est envoyée depuis l'adresse de révocation (la clé aura dû être chargée au préalable depuis l'interface).
|
||||||
|
|
||||||
## 12. <a name='Clsdethirdparties'></a>Clés de third parties
|
## 12. <a name='Clsdethirdparties'></a>Clés de third parties
|
||||||
|
|
||||||
Au moment de l'update de l'`ItemMember` il est possible de charger des addresses SP de third parties pour lesquelles l'utilisateur a un rôle dans un `ItemProcess`. Ces adresses sont ajoutées avec les labels et éventuellement les empreintes des dispositifs correspondants dans l'objet `ItemMember`.
|
Au moment de l'update de l'`ItemMember` il est possible de charger des addresses SP de third parties pour lesquelles l'utilisateur a un rôle dans un `ItemProcess`. Ces adresses sont ajoutées avec les labels et éventuellement les empreintes des dispositifs correspondants dans l'objet `ItemMember`.
|
||||||
|
|
||||||
@ -257,7 +259,7 @@ Les clés privées associées sont générées lors de l'update d'un membre, à
|
|||||||
|
|
||||||
Lorsqu'une transaction est reçue sur l'application de 2FA, celle-ci demande de confirmer ou non. Si il y a une confirmation dans l'interface alors une transaction SP est envoyée au dispositif initial, en dépensant l'UTXO reçue et avec les mêmes Hash dans les outputs que la transaction reçue afin que le dispositif initial puisse collecter les `RequestPrd` concernés.
|
Lorsqu'une transaction est reçue sur l'application de 2FA, celle-ci demande de confirmer ou non. Si il y a une confirmation dans l'interface alors une transaction SP est envoyée au dispositif initial, en dépensant l'UTXO reçue et avec les mêmes Hash dans les outputs que la transaction reçue afin que le dispositif initial puisse collecter les `RequestPrd` concernés.
|
||||||
|
|
||||||
## 13. <a name='Connexionsavecuneidentitcrerecover'></a>Connexions avec une identité crée (`recover`)
|
## 13. <a name='Connexionsavecuneidentitcrerecover'></a>Connexions avec une identité crée (`recover`)
|
||||||
|
|
||||||
Pour recrééer sa clé privée et envoyer un `RequestPrdList` à chaque membre du rôle `Member` du process, il faut réaliser les opérations suivantes :
|
Pour recrééer sa clé privée et envoyer un `RequestPrdList` à chaque membre du rôle `Member` du process, il faut réaliser les opérations suivantes :
|
||||||
|
|
||||||
@ -272,14 +274,14 @@ Puis depuis la liste des membres du process, pour chacun des membres :
|
|||||||
4. Envoi du `Message` du `RequestPrdList` à destination du membre.
|
4. Envoi du `Message` du `RequestPrdList` à destination du membre.
|
||||||
5. Attente de la validation (`RequestPrdResponse`) du `RequestPrdUpdate`.
|
5. Attente de la validation (`RequestPrdResponse`) du `RequestPrdUpdate`.
|
||||||
6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPrdResponse`.
|
6. Recomposition de la clé pour confirmation depuis les shards reçus dans les `RequestPrdResponse`.
|
||||||
6.1. Déchiffrement par le mot de passe de `Part1Enc` depuis le cache.
|
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 `RequestPrdResponse` de chaque member du `Role` `Member`du `ItemProcess`.
|
6.2. Déchiffrement par secret partagé de chaque shard reçu dans `id_shard_info_enc_by_shared_secret` des `RequestPrdResponse` de chaque member du `Role` `Member`du `ItemProcess`.
|
||||||
6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe
|
6.3. Recomposition de `Part2Enc` et déchiffrement par le mot de passe
|
||||||
6.4. Concaténation de `Part1` et `Part2`
|
6.4. Concaténation de `Part1` et `Part2`
|
||||||
7. Réception des flux PCD et PRDResponse des gestionnaires des membres
|
7. Réception des flux PCD et PRDResponse des gestionnaires des membres
|
||||||
|
|
||||||
## 14. <a name='ExemplesdeCode'></a>Exemples de Code
|
## 14. <a name='ExemplesdeCode'></a>Exemples de Code
|
||||||
|
|
||||||
## 15. <a name='Todo'></a>Todo
|
## 15. <a name='Todo'></a>Todo
|
||||||
|
|
||||||
* [ ] Extraits de code illustrant l'utilisation des `RequestPcd` et `RequestPrd` dans des scénarios réels.
|
* [ ] Extraits de code illustrant l'utilisation des `RequestPcd` et `RequestPrd` dans des scénarios réels.
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<!-- vscode-markdown-toc -->
|
<!-- vscode-markdown-toc -->
|
||||||
|
|
||||||
* 1. [Objectif](#Objectif)
|
* 1. [Objectif](#Objectif)
|
||||||
* 2. [Portée](#Porte)
|
* 2. [Portée](#Porte)
|
||||||
* 3. [Documents de référence](#Documentsderfrence)
|
* 3. [Documents de référence](#Documentsderfrence)
|
||||||
@ -60,6 +61,7 @@ Voir [_Doc_references.md](_Doc_references.md).
|
|||||||
* **Portable Contract Document (`RequestPcd`)**: Un format `JSON` chiffré conçu pour contenir des listes d'éléments d'un type spécifique, attachées à un processus (`process_hash`) et soumises aux règles de validation décrites dans le rôle correspondant à ce type d'`Item` dans le `ItemProcess` (`item_type`).
|
* **Portable Contract Document (`RequestPcd`)**: Un format `JSON` chiffré conçu pour contenir des listes d'éléments d'un type spécifique, attachées à un processus (`process_hash`) et soumises aux règles de validation décrites dans le rôle correspondant à ce type d'`Item` dans le `ItemProcess` (`item_type`).
|
||||||
|
|
||||||
* **Portable Request Document (`RequestPrd`)**: Format `JSON` chiffré contenant les valeurs de signatures et les clés de déchiffrement nécessaires à l'exploitation (requêtes et validation) des `RequestPcd`. Les `RequestPrdResponse` sont collectés pour vérifier le respect des conditions de l'`ItemProcess`. D'autres types de `RequestPrd` incluent :
|
* **Portable Request Document (`RequestPrd`)**: Format `JSON` chiffré contenant les valeurs de signatures et les clés de déchiffrement nécessaires à l'exploitation (requêtes et validation) des `RequestPcd`. Les `RequestPrdResponse` sont collectés pour vérifier le respect des conditions de l'`ItemProcess`. D'autres types de `RequestPrd` incluent :
|
||||||
|
|
||||||
* `RequestPrdList`: Demande de listes d'`Item`. En réponse, une `RequestPcd` est reçue avec les `RequestPrdResponse` correspondants.
|
* `RequestPrdList`: Demande de listes d'`Item`. En réponse, une `RequestPcd` est reçue avec les `RequestPrdResponse` correspondants.
|
||||||
* `RequestPrdMessage`: Envoi de messages publics, confidentiels ou privés et/ou de transactions Silent Payments des autres `RequestPrd` à diffuser sur le réseau des nœuds de la side chain. Les `RequestPrdMessage` peuvent répondre les uns aux autres.
|
* `RequestPrdMessage`: Envoi de messages publics, confidentiels ou privés et/ou de transactions Silent Payments des autres `RequestPrd` à diffuser sur le réseau des nœuds de la side chain. Les `RequestPrdMessage` peuvent répondre les uns aux autres.
|
||||||
* `RequestPrdUpdate`: Demande de mise à jour d'une liste d'`Item` (publiée via un `RequestPCD`), qui sera déchiffrée et validée ou non par des `RequestPrdResponse` en retour.
|
* `RequestPrdUpdate`: Demande de mise à jour d'une liste d'`Item` (publiée via un `RequestPCD`), qui sera déchiffrée et validée ou non par des `RequestPrdResponse` en retour.
|
||||||
@ -118,7 +120,7 @@ Les traitements pour l'envoi des `RequestPrd` varient selon leur type, principal
|
|||||||
Ce qui est résumé pour l'envoi :
|
Ce qui est résumé pour l'envoi :
|
||||||
|
|
||||||
| `request_type` | Notification user | `transaction SP` + `RequestPrdMessage` | `RequestPcd` to send | `request_type` send to | `RequestPcd` reply waiting | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting |
|
| `request_type` | Notification user | `transaction SP` + `RequestPrdMessage` | `RequestPcd` to send | `request_type` send to | `RequestPcd` reply waiting | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting |
|
||||||
|----------------------|-----------------------------------------------------------------------------------|----------------------------------------|----------------------|-----------------------------------------------------------------|----------------------------|------------------------------------|-----------------------------------|
|
| -------------------- | --------------------------------------------------------------------------------- | -------------------------------------- | -------------------- | --------------------------------------------------------------- | -------------------------- | ---------------------------------- | --------------------------------- |
|
||||||
| `RequestPrdList` | No | Yes | No | all the members of the `item_name` `Role` into to `ItemProcess` | Yes | Yes | Yes |
|
| `RequestPrdList` | No | Yes | No | all the members of the `item_name` `Role` into to `ItemProcess` | Yes | Yes | Yes |
|
||||||
| `RequestPrdUpdate` | waiting `sig_value` | Yes | Yes | all the members of all `Role` into to `ItemProcess` | No | Yes | Yes |
|
| `RequestPrdUpdate` | waiting `sig_value` | Yes | Yes | all the members of all `Role` into to `ItemProcess` | No | Yes | Yes |
|
||||||
| `RequestPrdMessage` | waiting `sig_value` + `message_public`, `message_confidential`, `message_private` | if no `raw_transaction_list` | No | a member of the `ItemProcess` | No | No | if no `raw_transaction_list` |
|
| `RequestPrdMessage` | waiting `sig_value` + `message_public`, `message_confidential`, `message_private` | if no `raw_transaction_list` | No | a member of the `ItemProcess` | No | No | if no `raw_transaction_list` |
|
||||||
@ -136,7 +138,7 @@ Les traitements pour la réception des `RequestPrd` varient selon leur type, pri
|
|||||||
Ce qui est résumé Pour la réception :
|
Ce qui est résumé Pour la réception :
|
||||||
|
|
||||||
| `request_type` | Notification user | `RequestPrdConfirm` to send | `RequestPcd` to send | `RequestPrdResponse` to send | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting (from `RequestPrdResponse` send ) |
|
| `request_type` | Notification user | `RequestPrdConfirm` to send | `RequestPcd` to send | `RequestPrdResponse` to send | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting (from `RequestPrdResponse` send ) |
|
||||||
|----------------------|-----------------------------------|------------------------------|----------------------|-----------------------------------------------------------------|------------------------------------|---------------------------------------------------------------------|
|
| -------------------- | --------------------------------- | ---------------------------- | -------------------- | --------------------------------------------------------------- | ---------------------------------- | ------------------------------------------------------------------- |
|
||||||
| `RequestPrdList` | No | Yes | Yes | all the members of the `item_name` `Role` into to `ItemProcess` | No | Yes |
|
| `RequestPrdList` | No | Yes | Yes | all the members of the `item_name` `Role` into to `ItemProcess` | No | Yes |
|
||||||
| `RequestPrdUpdate` | Info | Yes | No | all the members of all `Role` into to `ItemProcess` | Yes (other members) | Yes |
|
| `RequestPrdUpdate` | Info | Yes | No | all the members of all `Role` into to `ItemProcess` | Yes (other members) | Yes |
|
||||||
| `RequestPrdMessage` | Waiting `RequestPrdMessage` reply | if no `raw_transaction_list` | No | No | No | No |
|
| `RequestPrdMessage` | Waiting `RequestPrdMessage` reply | if no `raw_transaction_list` | No | No | No | No |
|
||||||
@ -159,18 +161,6 @@ Les `Metadata` des `Item` des `RequestPcd` et les attributs des `RequestPcd` et
|
|||||||
|
|
||||||
* **Données privées** : Chiffrées symétriquement en utilisant la clé de dépense de connexion (`recover`) du signet (voir Login - Specs).
|
* **Données privées** : Chiffrées symétriquement en utilisant la clé de dépense de connexion (`recover`) du signet (voir Login - Specs).
|
||||||
|
|
||||||
Principaux champs des `Request` contenus dans les `RequestPcd` et `RequestPrd` chiffrés :
|
|
||||||
|
|
||||||
* **`request_type`** : Type de requête : `RequestPcd`, `RequestPrdList`, `RequestPrdMessage`, `RequestPrdUpdate`, `RequestPrdConfirm`, `RequestPrdResponse`.
|
|
||||||
* **`item_name`** : Noms des items : `peer`, `member`, `process`, `payment`, `deposit`, `commitment`, et les `artefact` personnalisés.
|
|
||||||
* **`version`** : Version de la requête.
|
|
||||||
* **`process_hash`** : Hash de l'`ItemProcess` concerné.
|
|
||||||
* **`request_pcd_reference_hash`** : Hash du `RequestPcd` auquel le `RequestPrd` fait référence.
|
|
||||||
* **`request_pcd_origin_hash`** : Hash du `RequestPcd` à l'origine du `RequestPrd`.
|
|
||||||
* **`request_prd_reference_hash`** : Hash du `RequestPrd` auquel le `RequestPrd` fait référence.
|
|
||||||
* **`request_prd_origin_hash`** : Hash du `RequestPrd` à l'origine du `RequestPrd`.
|
|
||||||
* **`item_reference_hash`** : Hash de l'`Item` auquel le `RequestPcd` fait référence.
|
|
||||||
|
|
||||||
### 6.1. <a name='Crationetenvoi'></a>Création et envoi
|
### 6.1. <a name='Crationetenvoi'></a>Création et envoi
|
||||||
|
|
||||||
Les `RequestPcd` et les `RequestPrd` sont envoyés sous forme de messages (`JSON`) via les `websockets` des relais.
|
Les `RequestPcd` et les `RequestPrd` sont envoyés sous forme de messages (`JSON`) via les `websockets` des relais.
|
||||||
@ -205,49 +195,6 @@ Les Portable Contract Documents (`RequestPcd`) sont des documents au format `JSO
|
|||||||
|
|
||||||
Les `Item` échangés via les `RequestPcd` sont soumis à une vérification par les `RequestPrdResponse` dans le but de contrôler la validité de ces données et leur conformité avec les `ItemProcess` et les `member` du `Role` concerné.
|
Les `Item` échangés via les `RequestPcd` sont soumis à une vérification par les `RequestPrdResponse` dans le but de contrôler la validité de ces données et leur conformité avec les `ItemProcess` et les `member` du `Role` concerné.
|
||||||
|
|
||||||
Principaux champs des `RequestPcd` :
|
|
||||||
|
|
||||||
* **`request`** : cf la descripton de la structure `Request`.
|
|
||||||
* **`item_enc_list`** : Les `Item` chiffrés par une clé symétrique générée à la volée pour chaque champ et pour chaque item d'une liste.
|
|
||||||
* **`pagination`** : La pagination de la liste des `Item`.
|
|
||||||
|
|
||||||
Principaux champs de la structure `Pagination` :
|
|
||||||
|
|
||||||
* **`start`** : Index du premier `Item` de la liste.
|
|
||||||
* **`number`** : Nombre d'`Item` à afficher.
|
|
||||||
* **`page_index`** : Index de la page.
|
|
||||||
* **`page_total`** : Nombre total de pages.
|
|
||||||
|
|
||||||
Principaux champs de la structure `RequestPcdItemGenericEnc` :
|
|
||||||
|
|
||||||
* **`version`** : Version de l'`Item`.
|
|
||||||
* **`item_type`** : Type de l'`Item`.
|
|
||||||
* **`name`** : Nom de l'`Item`.
|
|
||||||
* **`request_pcd_item_enc_attribute_public_list`** : Liste d'objets `RequestPcdItemEncAttributePublic` des attributs publics de l'`Item` chiffré.
|
|
||||||
* **`request_pcd_item_enc_attribute_role_confidential_list`** : Liste d'objets `RequestPcdItemEncAttributeRoleConfidential` des attributs confidentiels de l'`Item` chiffré.
|
|
||||||
* **`request_pcd_item_enc_attribute_private_list`** : Liste d'objets `RequestPcdItemEncAttributePrivate` des attributs privés de l'`Item` chiffré.
|
|
||||||
|
|
||||||
Principaux champs de la structure `RequestPcdItemEncAttributePublic` :
|
|
||||||
|
|
||||||
* **`attribute_name`** : Nom de l'attribut.
|
|
||||||
* **`data_enc`** : Données chiffrées par la clé `ProcessKey` de l'`ItemProcess` concerné.
|
|
||||||
* **`key`** : [PRIVE] Clé de chiffrement, non partagée dans les messages. Données en clair.
|
|
||||||
* **`data`** : [PRIVE] Non partagé dans les messages. Données en clair.
|
|
||||||
|
|
||||||
Principaux champs de la structure `RequestPcdItemEncAttributeRoleConfidential` :
|
|
||||||
|
|
||||||
* **`attribute_name`** : Nom de l'attribut.
|
|
||||||
* **`data_enc`** : Données chiffrées par une clé symétrique générée à la volée pour chaque champ et pour chaque item d'une liste.
|
|
||||||
* **`key`** : [PRIVE] Clé de chiffrement, non partagée dans les messages. Données en clair.
|
|
||||||
* **`data`** : [PRIVE] Non partagé dans les messages. Données en clair.
|
|
||||||
|
|
||||||
Principaux champs de la structure `RequestPcdItemEncAttributePrivate` :
|
|
||||||
|
|
||||||
* **`attribute_name`** : Nom de l'attribut.
|
|
||||||
* **`data_enc`** : Données chiffrées par la clé privée `KeyRecover`.
|
|
||||||
* **`key`** : [PRIVE] Clé de chiffrement, non partagée dans les messages. Données en clair.
|
|
||||||
* **`data`** : [PRIVE] Non partagé dans les messages. Données en clair.
|
|
||||||
|
|
||||||
### 7.1. <a name='Schmadesflux'></a>Schéma des flux
|
### 7.1. <a name='Schmadesflux'></a>Schéma des flux
|
||||||
|
|
||||||

|

|
||||||
@ -281,34 +228,6 @@ Les clés permettant le chiffrement des attributs confidentiels par rôles des `
|
|||||||
|
|
||||||
Les `RequestPrd` se déclinent en plusieurs types, tels que `RequestPrdList`, `RequestPrdMessage`, `RequestPrdUpdate`, etc., correspondant à différentes actions comme l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
|
Les `RequestPrd` se déclinent en plusieurs types, tels que `RequestPrdList`, `RequestPrdMessage`, `RequestPrdUpdate`, etc., correspondant à différentes actions comme l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
|
||||||
|
|
||||||
Principaux champs des `RequestPcd` :
|
|
||||||
|
|
||||||
* **`request`** : cf la descripton de la structure `Request`.
|
|
||||||
* **`sig_value`** : Valeur de la signature (parmi les valeurs valant pour `OK`, `KO` ou `none` telles que définies dans l'`ItemProcess`).
|
|
||||||
* **`request_pcd_reference_keys_role_confidential_list_enc_by_shared_secret`** : Clés de déchiffrement des attributs confidentiels des `Item` des `RequestPcd` chiffrées par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
* **`request_pcd_origin_hash_keys_role_confidential_list_enc_by_shared_secret`** : Clés de déchiffrement des attributs confidentiels des `Item` des `RequestPcd` du `RequestPCD` de référence, chiffrées par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
* **`message_public`** : Message public, chiffré par la clé `ProcessKey` du `ItemProcess` concerné.
|
|
||||||
* **`message_confidential`** : Message confidentiel, chiffré par la clé `ProcessKey` du `ItemProcess` concerné.
|
|
||||||
* **`message_private`** : Message privé, chiffré par la clé privée `KeyRecover`.
|
|
||||||
* **`sp_address_to`** : Adresse du destinataire.
|
|
||||||
* **`sp_address_from`** : Adresse de l'émetteur.
|
|
||||||
* **`sp_address_reply`** : Adresse de réponse à l'émetteur.
|
|
||||||
* **`timestamp_declared`** : Horodatage déclaré.
|
|
||||||
* **`role_name_from`** : Nom du rôle de l'émetteur.
|
|
||||||
* **`role_name_to`** : Nom du rôle du destinataire.
|
|
||||||
* **`payment_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `paiement` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
* **`cap_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `deposit` chiffrée par la clé `KeyConfidential` d'une `transaction SP` servant à la validation des paiements temporaires en attente du passage d'un cap.
|
|
||||||
* **`deposit_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `deposit` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
* **`commitment_request_pcd_hash_list_enc_by_shared_secret`** : Liste des `RequestPcd` d'`Item` de nom `commitment` chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
* **`ask_payment_method_enc_by_shared_secret`** : Demande de méthode de paiement chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
* **`ask_deposit_method_enc_by_shared_secret`** : Demande de méthode de dépôt chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
* **`ask_commitment_method_enc_by_shared_secret`** : Demande de méthode d'engagement chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
* **`payment_method_enc_by_shared_secret`** : Méthode de paiement chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
|
|
||||||
* **`deposit_method_enc_by_shared_secret`** : Méthode de dépôt chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
|
|
||||||
* **`commitment_method_enc_by_shared_secret`** : Méthode d'engagement chiffrée par la clé `KeyConfidential` d'une `transaction SP`, en réponse à une demande.
|
|
||||||
* **`certif_key_enc_by_shared_secret`** : Clé de certification chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
* **`device_footprint_enc_by_sp_shared_secret`** : Empreinte du dispositif de l'émetteur, chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
|
|
||||||
### 8.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
### 8.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
||||||
|
|
||||||
Pour simplifier, les `RequestPrdConfirm` n'ont pas été inclus dans le schéma.
|
Pour simplifier, les `RequestPrdConfirm` n'ont pas été inclus dans le schéma.
|
||||||
@ -381,39 +300,6 @@ Workflow:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Principaux champs des `RequestPrdList` :
|
|
||||||
|
|
||||||
* **`request_prd`** : cf la descripton de la structure `RequestPrd`.
|
|
||||||
|
|
||||||
Dans le cas d'une création de compte :
|
|
||||||
|
|
||||||
* **`item_member_enc_by_sp_shared_secret`** : Nouvel `ItemMember` temporaire,chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
|
|
||||||
L'`ItemMember` temporaire contient les métadonnées de type `Metadata` suivantes :
|
|
||||||
|
|
||||||
* **`MetadataProcessPublic` de type `ItemMemberPublicAttributeGroup`** :
|
|
||||||
|
|
||||||
* **`sp_address_public`** : Adresse publique de l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
|
|
||||||
* **`sp_address_public_sig`** : Signature de l'adresse publique de l'utilisateur par la clé `recover`, chiffré par la `ProcessKey` de l'`ItemProcess`.
|
|
||||||
* **`sp_address_revoke_public`** : Adresse publique de révocation de l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
|
|
||||||
* **`sp_address_revoke_public_sig`** : Signature de l'adresse publique de révocation de l'utilisateur par la clé de spend de `revoke`, chiffré par la `ProcessKey` de l'`ItemProcess`.
|
|
||||||
* **`third_sp_address_list_public`** : Liste des adresses publiques de devices tiers, chiffré par la `ProcessKey` de l'`ItemProcess`.
|
|
||||||
* **`data_size_max`** : Taille maximale des données acceptée par l'utilisateur (par flux), chiffré par la `ProcessKey` de l'`ItemProcess`.
|
|
||||||
* **`payment_method_list_public`** : Liste des méthodes de paiement acceptées par l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
|
|
||||||
* **`succession_process_hash`** : Hash du processus de succession de l'utilisateur (transmission de l'identité numérique et donc de tous les flux associés), chiffré par la `ProcessKey` de l'`ItemProcess`.
|
|
||||||
* **`device_footprint`** : Empreinte du dispositif de l'utilisateur, chiffré par la `ProcessKey` de l'`ItemProcess`.
|
|
||||||
|
|
||||||
* **`MetadataRoleConfidential` de type `ItemMemberRoleConfidentialAttributeGroup`** :
|
|
||||||
|
|
||||||
* **`shard_confidential`** : Shard de l'utilisateur, chiffré par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
* **`pre_id_confidential`** : Pré empreinte de l'identité numérique de l'utilisateur, chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
|
|
||||||
* **`MetadataPrivate` de type `ItemMemberRolePrivateAttributeGroup`** :
|
|
||||||
|
|
||||||
* **`priv_key_mainnet_spend`** : Clé de dépense de l'utilisateur, chiffrée par la clé privée du mainnet, chiffrée par `KeyRecover`.
|
|
||||||
* **`priv_key_mainnet_scan`** : Clé de scan de l'utilisateur, chiffrée par la clé privée du mainnet, chiffrée par `KeyRecover`.
|
|
||||||
* **`priv_key_signet_scan`** : Clé de scan du signet de `recover`de l'utilisateur, chiffrée `KeyRecover`.
|
|
||||||
|
|
||||||
### 9.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
### 9.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
||||||
|
|
||||||
Pour simplifier, les `RequestPrdConfirm` n'ont pas été inclus dans le schéma.
|
Pour simplifier, les `RequestPrdConfirm` n'ont pas été inclus dans le schéma.
|
||||||
@ -449,11 +335,6 @@ Les `RequestPrdMessage` peuvent répondre aux autres `RequestPrdMessage`, sauf e
|
|||||||
Workflow :
|
Workflow :
|
||||||

|

|
||||||
|
|
||||||
Principaux champs des `RequestPrdMessage` :
|
|
||||||
|
|
||||||
* **`request_prd`** : cf la descripton de la structure `RequestPrd`.
|
|
||||||
* **`raw_transaction_list`** : Liste des `transaction SP` au format `raw` pour la publication de la transaction dans la side chain.
|
|
||||||
|
|
||||||
### 10.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
### 10.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
||||||
|
|
||||||
Pour simplifier, les `RequestPrdConfirm` n'ont pas été inclus dans le schéma. Exemple d'un `RequestPrdMessage` avec `raw_transaction_list` vide, et son cas correspondant où le `RequestPrdMessage` contient une `raw_transaction_list` non vide.
|
Pour simplifier, les `RequestPrdConfirm` n'ont pas été inclus dans le schéma. Exemple d'un `RequestPrdMessage` avec `raw_transaction_list` vide, et son cas correspondant où le `RequestPrdMessage` contient une `raw_transaction_list` non vide.
|
||||||
@ -485,10 +366,6 @@ Workflow:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Principaux champs des `RequestPrdUpdate` :
|
|
||||||
|
|
||||||
* **`request_prd`** : cf la descripton de la structure `RequestPrd`.
|
|
||||||
|
|
||||||
### 11.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
### 11.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
||||||
|
|
||||||
Pour simplifier, les `RequestPrdConfirm` n'ont pas été représentés dans le schéma.
|
Pour simplifier, les `RequestPrdConfirm` n'ont pas été représentés dans le schéma.
|
||||||
@ -519,11 +396,6 @@ Worflow:
|
|||||||
|
|
||||||
Voir les diagrammes `PRDUpdateFlows`, `PRDUpdateFlows` et `PRDMessageFlows`.
|
Voir les diagrammes `PRDUpdateFlows`, `PRDUpdateFlows` et `PRDMessageFlows`.
|
||||||
|
|
||||||
Principaux champs des `RequestPrdConfirm` :
|
|
||||||
|
|
||||||
* **`request_prd`** : cf la descripton de la structure `RequestPrd`.
|
|
||||||
* **`code_confirm_enc_by_shared_secret`** : Code de confirmation chiffré par la clé `KeyConfidential` d'une `transaction SP` dans le cas d'un 2FA.
|
|
||||||
|
|
||||||
### 12.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
### 12.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
||||||
|
|
||||||

|

|
||||||
@ -550,12 +422,6 @@ Workflow:
|
|||||||
|
|
||||||
Voir les diagrammes `PRDUpdateFlows` et `PRDUpdateFlows`.
|
Voir les diagrammes `PRDUpdateFlows` et `PRDUpdateFlows`.
|
||||||
|
|
||||||
Principaux champs des `RequestPrdResponse` :
|
|
||||||
|
|
||||||
* **`request_prd`** : cf la descripton de la structure `RequestPrd`.
|
|
||||||
* **`shared_secret_key_enc_by_sp_shared_secret`** : Clé de chiffrement partagée chiffrée par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
* **`shard_enc_by_sp_shared_secret`** : Shard chiffré par la clé `KeyConfidential` d'une `transaction SP`.
|
|
||||||
|
|
||||||
### 13.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
### 13.1. <a name='Schmadesflux-1'></a>Schéma des flux
|
||||||
|
|
||||||
Pour simplifier, les `RequestPrdConfirm` n'ont pas été représentés dans le schéma.
|
Pour simplifier, les `RequestPrdConfirm` n'ont pas été représentés dans le schéma.
|
||||||
@ -580,11 +446,11 @@ Pour simplifier, les `RequestPrdConfirm` n'ont pas été représentés dans le s
|
|||||||
## 15. <a name='Todo'></a>Todo
|
## 15. <a name='Todo'></a>Todo
|
||||||
|
|
||||||
[ ] Description détaillée de tous les éléments (attributs) qui composent le ‘request-type’:
|
[ ] Description détaillée de tous les éléments (attributs) qui composent le ‘request-type’:
|
||||||
[x] Qu’y a-t-il dans le ‘request-type’?
|
[ ] Qu’y a-t-il dans le ‘request-type’?
|
||||||
[x] A quoi sert l’attribut X du ‘request-type’?
|
[ ] A quoi sert l’attribut X du ‘request-type’?
|
||||||
[x] Description un par un des contextes où le ‘request-type’ est utilisé.
|
[ ] Description un par un des contextes où le ‘request-type’ est utilisé.
|
||||||
[x] Description pas à pas de l’envoi du ‘request-type’.
|
[ ] Description pas à pas de l’envoi du ‘request-type’.
|
||||||
[ ] Que se passe-t-il dans le système lorsque le ‘request-type est envoyé?
|
[ ] Que se passe-t-il dans le système lorsque le ‘request-type est envoyé?
|
||||||
[x] Description pas à pas de la réception du ‘request-type’.
|
[ ] Description pas à pas de la réception du ‘request-type’.
|
||||||
[x] Que se passe-t-il dans le système lorsque le ‘request-type est reçu?
|
[ ] Que se passe-t-il dans le système lorsque le ‘request-type est reçu?
|
||||||
[x] Exemple d’utilisation.
|
[ ] Exemple d’utilisation.
|
||||||
|
@ -1,17 +1,20 @@
|
|||||||
<!-- vscode-markdown-toc -->
|
<!-- vscode-markdown-toc -->
|
||||||
|
|
||||||
* 1. [Worfklows](#Worfklows)
|
* 1. [Worfklows](#Worfklows)
|
||||||
* 2. [Transverse](#Transverse)
|
* 2. [Transverse](#Transverse)
|
||||||
* 3. [Diagrammes d'architecture](#Diagrammesdarchitecture)
|
* 3. [Diagrammes d'architecture](#Diagrammesdarchitecture)
|
||||||
* 4. [Todo](#Todo)
|
* 4. [Todo](#Todo)
|
||||||
|
|
||||||
<!-- vscode-markdown-toc-config
|
<!-- vscode-markdown-toc-config
|
||||||
numbering=true
|
numbering=true
|
||||||
autoSave=true
|
autoSave=true
|
||||||
/vscode-markdown-toc-config -->
|
/vscode-markdown-toc-config -->
|
||||||
|
|
||||||
<!-- /vscode-markdown-toc -->
|
<!-- /vscode-markdown-toc -->
|
||||||
|
|
||||||
# <a name='Documentsderfrence'></a>Documents de référence
|
# <a name='Documentsderfrence'></a>Documents de référence
|
||||||
|
|
||||||
## 1. <a name='Worfklows'></a>Worfklows
|
## 1. <a name='Worfklows'></a>Worfklows
|
||||||
|
|
||||||
* **Authentification**: [Auth.md](Auth-Specs.md)
|
* **Authentification**: [Auth.md](Auth-Specs.md)
|
||||||
* **Items**: [Item-Specs.md](Item-Specs.md)
|
* **Items**: [Item-Specs.md](Item-Specs.md)
|
||||||
@ -20,7 +23,7 @@
|
|||||||
* **Process et roles**: [Process-Role-Specs.md](Process-Role-Specs.md)
|
* **Process et roles**: [Process-Role-Specs.md](Process-Role-Specs.md)
|
||||||
* **Transactions Silent Payment**: [Silent-Payment-Specs.md](Silent-Payment-Specs.md)
|
* **Transactions Silent Payment**: [Silent-Payment-Specs.md](Silent-Payment-Specs.md)
|
||||||
|
|
||||||
## 2. <a name='Transverse'></a>Transverse
|
## 2. <a name='Transverse'></a>Transverse
|
||||||
|
|
||||||
* **Datamodel**: [Specs-Datamodel.md](Specs-Datamodel.md)
|
* **Datamodel**: [Specs-Datamodel.md](Specs-Datamodel.md)
|
||||||
* **Définitions et abréviations.**: [Specs-Definition.md]
|
* **Définitions et abréviations.**: [Specs-Definition.md]
|
||||||
@ -29,9 +32,9 @@
|
|||||||
* **Maintenance, environnement de déploiement**: [Specs-Deployment.md]
|
* **Maintenance, environnement de déploiement**: [Specs-Deployment.md]
|
||||||
* **References**: [Specs-References.md](Specs-References.md)
|
* **References**: [Specs-References.md](Specs-References.md)
|
||||||
|
|
||||||
## 3. <a name='Diagrammesdarchitecture'></a>Diagrammes d'architecture
|
## 3. <a name='Diagrammesdarchitecture'></a>Diagrammes d'architecture
|
||||||
|
|
||||||
* **Diagramme d'architecture montrant les composants principaux du système de login.**
|
* **Diagramme d'architecture montrant les composants principaux du système de login.**
|
||||||
[SheatSheet 4NK](https://cryptpad.fr/diagram/#/2/diagram/view/3UG+7ccutUvJlwJ1-bR40RhgOA+rb5eEmw42wtkN19A)
|
[SheatSheet 4NK](https://cryptpad.fr/diagram/#/2/diagram/view/3UG+7ccutUvJlwJ1-bR40RhgOA+rb5eEmw42wtkN19A)
|
||||||
|
|
||||||
## 4. <a name='Todo'></a>Todo
|
## 4. <a name='Todo'></a>Todo
|
||||||
|
Loading…
x
Reference in New Issue
Block a user