index updated (doc)
This commit is contained in:
parent
3c79a75819
commit
15a722ee33
@ -13,31 +13,32 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
|
|||||||
* 4. [Portée](#Porte)
|
* 4. [Portée](#Porte)
|
||||||
* 5. [Documents de référence](#Documentsderfrence)
|
* 5. [Documents de référence](#Documentsderfrence)
|
||||||
* 6. [Schématisation des processus](#Schmatisationdesprocessus)
|
* 6. [Schématisation des processus](#Schmatisationdesprocessus)
|
||||||
* 6.1. [Création d'une identité](#Crationduneidentit)
|
* 6.1. [Création d'une identité](#Crationduneidentit)
|
||||||
* 6.2. [Onboarding](#Onboarding)
|
* 6.2. [Onboarding](#Onboarding)
|
||||||
* 6.3. [Connexion avec une identité créée (`recover`)](#Connexionavecuneidentitcrerecover)
|
* 6.3. [Connexion avec une identité créée (`recover`)](#Connexionavecuneidentitcrerecover)
|
||||||
* 6.4. [Extension de l'entropie du mot de passe (PBKDF2)](#ExtensiondelentropiedumotdepassePBKDF2)
|
* 6.4. [Extension de l'entropie du mot de passe (PBKDF2)](#ExtensiondelentropiedumotdepassePBKDF2)
|
||||||
* 6.5. [Chiffrement AES quantique résistant (AES-GCM-256)](#ChiffrementAESquantiquersistantAES-GCM-256)
|
* 6.5. [Chiffrement AES quantique résistant (AES-GCM-256)](#ChiffrementAESquantiquersistantAES-GCM-256)
|
||||||
* 6.6. [Génération des clés privées](#Gnrationdesclsprives)
|
* 6.6. [Génération des clés privées](#Gnrationdesclsprives)
|
||||||
* 7. [Authentification des utilisateurs](#Authentificationdesutilisateurs)
|
* 7. [Authentification des utilisateurs](#Authentificationdesutilisateurs)
|
||||||
* 8. [Connexion via des tiers](#Connexionviadestiers)
|
* 8. [Connexion via des tiers](#Connexionviadestiers)
|
||||||
* 9. [Fonctionnalité de récupération de mot de passe](#Fonctionnalitdercuprationdemotdepasse)
|
* 9. [Fonctionnalité de récupération de mot de passe](#Fonctionnalitdercuprationdemotdepasse)
|
||||||
* 10. [Gestion de session basée sur un cache](#Gestiondesessionbasesuruncache)
|
* 10. [Gestion de session basée sur un cache](#Gestiondesessionbasesuruncache)
|
||||||
* 11. [Wallet](#Wallet)
|
* 11. [Principe de fonctionnement](#Principedefonctionnement)
|
||||||
* 11.1. [Récupération des jetons de faucet](#Rcuprationdesjetonsdefaucet)
|
* 12. [Wallet](#Wallet)
|
||||||
* 12. [Gestion des clés de l'identité (aussi les clés des transactions SP)](#GestiondesclsdelidentitaussilesclsdestransactionsSP)
|
* 12.1. [Récupération des jetons de faucet](#Rcuprationdesjetonsdefaucet)
|
||||||
* 12.1. [Génération des clés privées (création des identités numériques)](#Gnrationdesclsprivescrationdesidentitsnumriques)
|
* 13. [Gestion des clés de l'identité (aussi les clés des transactions SP)](#GestiondesclsdelidentitaussilesclsdestransactionsSP)
|
||||||
* 12.1.1. [Gestion de la clé servant à l'ID `spend_recover`](#GestiondelaclservantlIDspend_recover)
|
* 13.1. [Génération des clés privées (création des identités numériques)](#Gnrationdesclsprivescrationdesidentitsnumriques)
|
||||||
* 12.1.2. [Backup de `Part2Enc`](#BackupdePart2Enc)
|
* 13.1.1. [Gestion de la clé servant à l'ID `spend_recover`](#GestiondelaclservantlIDspend_recover)
|
||||||
* 12.1.3. [Onboarding](#Onboarding-1)
|
* 13.1.2. [Backup de `Part2Enc`](#BackupdePart2Enc)
|
||||||
* 12.2. [Member complété des champs du process sélectionné et mise à jour de la liste des Members du process](#MembercompltdeschampsduprocessslectionnetmisejourdelalistedesMembersduprocess)
|
* 13.1.3. [Onboarding](#Onboarding-1)
|
||||||
* 12.3. [Process complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process](#ProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess)
|
* 13.2. [Member complété des champs du process sélectionné et mise à jour de la liste des Members du process](#MembercompltdeschampsduprocessslectionnetmisejourdelalistedesMembersduprocess)
|
||||||
* 12.4. [Réception des Pcd et PrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)](#RceptiondesPcdetPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn)
|
* 13.3. [Process complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process](#ProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess)
|
||||||
* 13. [Clés de révocation (`revoke`)](#Clsdervocationrevoke)
|
* 13.4. [Réception des Pcd et PrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)](#RceptiondesPcdetPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn)
|
||||||
* 14. [Clés de third parties](#Clsdethirdparties)
|
* 14. [Clés de révocation (`revoke`)](#Clsdervocationrevoke)
|
||||||
* 15. [Connexions avec une identité crée (`recover`)](#Connexionsavecuneidentitcrerecover)
|
* 15. [Clés de third parties](#Clsdethirdparties)
|
||||||
* 16. [Exemples de Code](#ExemplesdeCode)
|
* 16. [Connexions avec une identité crée (`recover`)](#Connexionsavecuneidentitcrerecover)
|
||||||
* 17. [Todo](#Todo)
|
* 17. [Exemples de Code](#ExemplesdeCode)
|
||||||
|
* 18. [Todo](#Todo)
|
||||||
|
|
||||||
<!-- vscode-markdown-toc-config
|
<!-- vscode-markdown-toc-config
|
||||||
numbering=true
|
numbering=true
|
||||||
@ -113,7 +114,7 @@ Une image de révocation est générée à la création d'une identité pour pou
|
|||||||
|
|
||||||
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.
|
||||||
|
|
||||||
## Principe de fonctionnement
|
## 11. <a name='Principedefonctionnement'></a>Principe de fonctionnement
|
||||||
|
|
||||||
A la création d'une identité numérique, l'utilisateur génère une clé privée Bitcoin pour les transactions SP (Silent Payments) et une clé privée pour la révocation de cette identité. Ces clés sont stockées dans les données exif d'une image de login et d'une image de révocation, respectivement.
|
A la création d'une identité numérique, l'utilisateur génère une clé privée Bitcoin pour les transactions SP (Silent Payments) et une clé privée pour la révocation de cette identité. Ces clés sont stockées dans les données exif d'une image de login et d'une image de révocation, respectivement.
|
||||||
|
|
||||||
@ -129,7 +130,7 @@ De même, les `PRDResponse` en réponse au `PRDUpdate` de la liste des `Member`
|
|||||||
|
|
||||||
Si l'utilisateur a aussi envoyé un `PRDUpdate` de la liste des `Process`, les `PRDResponse` en réponse contiendront la valeur de leur signature pour valider ou non la demande de mise à jour de la liste des `Process` ainsi que les clés chiffrées des champs confidentiels des `Process`.
|
Si l'utilisateur a aussi envoyé un `PRDUpdate` de la liste des `Process`, les `PRDResponse` en réponse contiendront la valeur de leur signature pour valider ou non la demande de mise à jour de la liste des `Process` ainsi que les clés chiffrées des champs confidentiels des `Process`.
|
||||||
|
|
||||||
## 11. <a name='Wallet'></a>Wallet
|
## 12. <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) :
|
||||||
|
|
||||||
@ -158,7 +159,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`.
|
||||||
|
|
||||||
### 11.1. <a name='Rcuprationdesjetonsdefaucet'></a>Récupération des jetons de faucet
|
### 12.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.
|
||||||
|
|
||||||
@ -168,11 +169,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 cf [Messages-Specs.md](Messages-Specs.md Messages Specs) pour la générantion d'une wallet temporaire qui versera les fonds reçus du faucet sur l'adresse silent payment de l'utilisateur.
|
Ces adresses apparaîtront dans l'attribut `faucet_sp_address` des messages envoyés aux relais cf [Messages-Specs.md](Messages-Specs.md Messages Specs) pour la générantion d'une wallet temporaire qui versera les fonds reçus du faucet sur l'adresse silent payment de l'utilisateur.
|
||||||
|
|
||||||
## 12. <a name='GestiondesclsdelidentitaussilesclsdestransactionsSP'></a>Gestion des clés de l'identité (aussi les clés des transactions SP)
|
## 13. <a name='GestiondesclsdelidentitaussilesclsdestransactionsSP'></a>Gestion des clés de l'identité (aussi les clés des transactions SP)
|
||||||
|
|
||||||
### 12.1. <a name='Gnrationdesclsprivescrationdesidentitsnumriques'></a>Génération des clés privées (création des identités numériques)
|
### 13.1. <a name='Gnrationdesclsprivescrationdesidentitsnumriques'></a>Génération des clés privées (création des identités numériques)
|
||||||
|
|
||||||
#### 12.1.1. <a name='GestiondelaclservantlIDspend_recover'></a>Gestion de la clé servant à l'ID `spend_recover`
|
#### 13.1.1. <a name='GestiondelaclservantlIDspend_recover'></a>Gestion de la clé servant à l'ID `spend_recover`
|
||||||
|
|
||||||
La clé privée `spend_recover` est la clé principale pour forger les identités.
|
La clé privée `spend_recover` est la clé principale pour forger les identités.
|
||||||
|
|
||||||
@ -204,15 +205,15 @@ pre_id=sha256(part1_spend_recover_enc, MDP, random_seed)
|
|||||||
|
|
||||||
2. Création d'un `PrdList` par Member (1 shard par Member) par `Prd` cf [PRD-PCD](PRD-PCD-Specs.md PRD-PCD) :
|
2. Création d'un `PrdList` par Member (1 shard par Member) par `Prd` cf [PRD-PCD](PRD-PCD-Specs.md PRD-PCD) :
|
||||||
|
|
||||||
#### 12.1.2. <a name='BackupdePart2Enc'></a>Backup de `Part2Enc`
|
#### 13.1.2. <a name='BackupdePart2Enc'></a>Backup de `Part2Enc`
|
||||||
|
|
||||||
Les relais initialisent le SDK (Wasm) par défaut avec une liste `ProcessList` contenant `Process` choisi.
|
Les relais initialisent le SDK (Wasm) par défaut avec une liste `ProcessList` contenant `Process` choisi.
|
||||||
|
|
||||||
Chacun de des managers des Members sera responsable de d'associer un `shard` de `Part2Enc` à une `pre-id` et de revoyer des les shards dans un `PrdResponse` en réponse au `PrdList` envoyé.
|
Chacun de des managers des Members sera responsable de d'associer un `shard` de `Part2Enc` à une `pre-id` et de revoyer des les shards dans un `PrdResponse` en réponse au `PrdList` envoyé.
|
||||||
|
|
||||||
#### 12.1.3. <a name='Onboarding-1'></a>Onboarding
|
#### 13.1.3. <a name='Onboarding-1'></a>Onboarding
|
||||||
|
|
||||||
### 12.2. <a name='MembercompltdeschampsduprocessslectionnetmisejourdelalistedesMembersduprocess'></a>Member complété des champs du process sélectionné et mise à jour de la liste des Members du process
|
### 13.2. <a name='MembercompltdeschampsduprocessslectionnetmisejourdelalistedesMembersduprocess'></a>Member complété des champs du process sélectionné et mise à jour de la liste des Members du process
|
||||||
|
|
||||||
Le role `Member` de `Process` 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 `Process` 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).
|
||||||
|
|
||||||
@ -220,23 +221,23 @@ Ces formulaires permettront de créé les champs attendus par `condition_attribu
|
|||||||
|
|
||||||
Une fois `Member` complété, il est ajouté à la liste des Members pour créer un nouveau `Pcd` envoyé pour mises à jours aux managers du rôle `Member` du `Process` sélectionné via un `PrdUpdate`.
|
Une fois `Member` complété, il est ajouté à la liste des Members pour créer un nouveau `Pcd` envoyé pour mises à jours aux managers du rôle `Member` du `Process` sélectionné via un `PrdUpdate`.
|
||||||
|
|
||||||
### 12.3. <a name='ProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess'></a>Process complété de l'address SP de l'utilisateur et mise à jour de la liste des version du process
|
### 13.3. <a name='ProcesscompltdeladdressSPdelutilisateuretmisejourdelalistedesversionduprocess'></a>Process 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 `Process` complété, il est ajouté à la liste des Members pour créer un nouveau `Pcd` envoyé pour mises à jours aux managers du rôle `Process` du `Process` sélectionné via un `PrdUpdate`.
|
Une fois `Process` complété, il est ajouté à la liste des Members pour créer un nouveau `Pcd` envoyé pour mises à jours aux managers du rôle `Process` du `Process` sélectionné via un `PrdUpdate`.
|
||||||
|
|
||||||
### 12.4. <a name='RceptiondesPcdetPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn'></a>Réception des Pcd et PrdResponse en tenant compte des mises à jours (réception des clés de déchiffrement du role choisi dans le process sélectionné)
|
### 13.4. <a name='RceptiondesPcdetPrdResponseentenantcomptedesmisesjoursrceptiondesclsdedchiffrementdurolechoisidansleprocessslectionn'></a>Réception des Pcd et PrdResponse 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 `PrdList` pour chaque Member de chaque rôle du process sélectionné.
|
Envoi d'un `PrdList` pour chaque Member de chaque rôle du process sélectionné.
|
||||||
|
|
||||||
## 13. <a name='Clsdervocationrevoke'></a>Clés de révocation (`revoke`)
|
## 14. <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 et stockées directement dans les données exifs de l'image de révocation.
|
Les clés de l'image de révocation sont chiffrées par le mot de passe et stockées directement dans les données exifs de l'image de révocation.
|
||||||
|
|
||||||
L'envoi d'une révocation est identique à la création d'une nouvelle adresse via les `PrdList` 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 `PrdList` 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).
|
||||||
|
|
||||||
## 14. <a name='Clsdethirdparties'></a>Clés de third parties
|
## 15. <a name='Clsdethirdparties'></a>Clés de third parties
|
||||||
|
|
||||||
Au moment de l'update de `Member` il est possible de charger des addresses SP de third parties pour lesquelles l'utilisateur a un rôle dans un `Process`. Ces adresses sont ajoutées avec les labels et éventuellement les empreintes des dispositifs correspondants dans l'objet `Member`.
|
Au moment de l'update de `Member` il est possible de charger des addresses SP de third parties pour lesquelles l'utilisateur a un rôle dans un `Process`. Ces adresses sont ajoutées avec les labels et éventuellement les empreintes des dispositifs correspondants dans l'objet `Member`.
|
||||||
|
|
||||||
@ -244,7 +245,7 @@ Les clés privées associées sont générées lors de l'update d'un Member, à
|
|||||||
|
|
||||||
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 `Prd` 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 `Prd` concernés.
|
||||||
|
|
||||||
## 15. <a name='Connexionsavecuneidentitcrerecover'></a>Connexions avec une identité crée (`recover`)
|
## 16. <a name='Connexionsavecuneidentitcrerecover'></a>Connexions avec une identité crée (`recover`)
|
||||||
|
|
||||||
Pour recrééer sa clé privée et envoyer un `PrdList` à chaque Member du rôle `Member` du process, il faut réaliser les opérations suivantes :
|
Pour recrééer sa clé privée et envoyer un `PrdList` à chaque Member du rôle `Member` du process, il faut réaliser les opérations suivantes :
|
||||||
|
|
||||||
@ -265,8 +266,8 @@ Puis depuis la liste des Members du process, pour chacun des Members :
|
|||||||
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 Members
|
7. Réception des flux PCD et PRDResponse des gestionnaires des Members
|
||||||
|
|
||||||
## 16. <a name='ExemplesdeCode'></a>Exemples de Code
|
## 17. <a name='ExemplesdeCode'></a>Exemples de Code
|
||||||
|
|
||||||
## 17. <a name='Todo'></a>Todo
|
## 18. <a name='Todo'></a>Todo
|
||||||
|
|
||||||
* [ ] Extraits de code illustrant l'utilisation des `Pcd` et `Prd` dans des scénarios réels.
|
* [ ] Extraits de code illustrant l'utilisation des `Pcd` et `Prd` dans des scénarios réels.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user