Récupération partagée

Avertissement

Cette section décrit une fonction avancée qui n’est actuellement disponible que via le CLI de Parsec. Pour une méthode conviviale de récupération de l’accès à votre organisation, voir Fichiers de récupération.

La récupération partagée permet à un utilisateur de récupérer l’accès à son organisation en distribuant les informations nécessaires à la récupération de son compte (le « secret ») parmi un groupe d’utilisateurs de l’organisation. Les informations sont divisées en parties (les « parts ») à partir desquelles le secret ne peut être reconstitué que lorsque le quorum est atteint, c’est-à-dire lorsqu’un nombre suffisant de parts (le « seuil ») sont combinées, ce qui permet de récupérer le compte de l’utilisateur.

Il est basé sur l’algorithme de partage de clé secrète de Shamir. L’idée est que même si un attaquant vole quelques parts, il lui est impossible de reconstituer le secret s’il n’a pas volé le nombre de parts correspondant au quorum.

Vue d’ensemble

Le processus de récupération partagée comprend les étapes suivantes :

  1. l’utilisateur crée une configuration de récupération partagée en choisissant

  • la liste des utilisateurs à qui envoyer des actions (recipients)

  • le nombre d’actions pour chaque bénéficiaire (weight)

  • le nombre d’actions nécessaires pour récupérer le compte (threshold)

  1. l’un des destinataires envoie une invitation à l’utilisateur pour qu’il récupère son compte

  2. l’utilisateur contacte les destinataires un par un jusqu’à ce que le seuil soit atteint

Le <DEVICE_ID> mentionné dans les commandes ci-dessous fait toujours référence à l’appareil de l’utilisateur qui exécute la commande (utilisateur ou administrateur). Vous pouvez connaître l’ID de votre appareil en lançant la commande :

parsec-cli device list

Création d’une récupération partagée

Pour configurer la récupération partagée pour un périphérique, exécutez la commande suivante :

parsec-cli shared-recovery create --device <DEVICE_ID>

Lancez l’aide de cette commande pour connaître toutes les options.

Si aucun destinataire n’est spécifié, tous les administrateurs de l’organisation seront destinataires d’un seul partage. Notez que les utilisateurs ayant un profil externe ne peuvent pas choisir leurs destinataires car ils n’ont pas accès à la liste des utilisateurs de l’organisation.

Si le seuil n’est pas spécifié, il sera demandé de manière interactive.

Récupérer l’accès avec la récupération partagée

Le processus de récupération partagée doit être initié par l’un des destinataires. L’utilisateur doit donc le contacter et lui demander une invitation à récupérer son compte.

Un destinataire peut créer une invitation en utilisant l’adresse électronique de l’utilisateur :

parsec-cli invite shared-recovery user@example.com --device $DEVICE

L’utilisateur recevra un courriel contenant l’adresse URL de l’invitation et pourra réclamer l’invitation à l’aide de la commande suivante :

parsec-cli invite claim $INVITATION_URL

L’utilisateur devra sélectionner les destinataires un par un, en procédant à l’échange de codes SAS, jusqu’à ce qu’un nombre suffisant d’actions ait été recueilli. Le nouveau dispositif est alors enregistré et l’accès est entièrement rétabli.

Un scénario d’exemple

Voici un scénario simple pour vous montrer le processus de récupération partagée. Pour des raisons de simplicité, toutes les commandes sont exécutées sur la même machine.

Étant donné une organisation avec les utilisateurs suivants :

parsec-cli device list
870 - Org: Arnold <arnold@example.com> @ label
bc1 - Org: Alice <alice@example.com> @ laptop
ea9 - Org: Bob <bob@example.com> @ laptop

Bob est membre de l’organisation. Alice et Arnold sont administrateurs.

Bob doit d’abord créer sa configuration de récupération partagée.

# Bob
parsec-cli shared-recovery create --device ea9
Enter password for the device:
✔ Poll server for new certificates
... Creating shared recovery setup
Choose a threshold between 1 and 2
The threshold is the minimum number of recipients that one must gather to recover the account: 2 Shared recovery setup has been created

Tous les administrateurs (Alice et Arnold) sont des destinataires, car aucun destinataire n’a été fourni. Bob choisit interactivement le seuil. La récupération partagée de Bob est donc entièrement configurée.

Oh non ! Bob a perdu l’accès à son appareil. Il doit contacter une Alice ou Arnold afin d’être invité à nouveau par le biais d’un processus de récupération partagée.

Alice crée l’invitation et partage l’URL avec Bob.

# Alice
parsec-cli invite shared-recovery  bob@example.com --device bc1
✔ Poll server for new certificates
Invitation URL: parsec3://127.0.0.1:6770/Org?no_ssl=true&a=claim_shamir_recovery&p=xBCEREHKItJ0lPzzEuk-8q0N

Bob peut maintenant lancer le processus d’invitation.

#Bob
parsec-cli invite claim "parsec3://127.0.0.1:6770/Org?no_ssl=true&a=claim_shamir_recovery&p=xBCEREHKItJ0lPzzEuk-8q0N" Retrieving invitation info
2 shares needed for recovery
Choose a person to contact now:
> Alice <alice@example.com> - 1 share(s)
  Arnold <arnold@example.com> - 1 share(s)

Bob doit choisir une personne à contacter en premier. Choisissons d’abord Alice.

Entre-temps, Alice doit être prête à accueillir Bob. Tout d’abord, elle récupère le jeton d’invitation.

# Alice
parsec-cli invite list --device bc1
✔ Poll server for new certificates
2 invitations found.
844441ca22d27494fcf312e93ef2ad0d    pending shamir recovery (Bob <bob@example.com>)

Il peut ensuite être utilisé pour accueillir Bob. Et procéder à un échange de codes SAS.

# Alice
parsec-cli invite greet --device bc1 844441ca22d27494fcf312e93ef2ad0d
✔ Poll server for new certificates
✔ Retrieving invitation info
✔ Waiting for claimer
Code to provide to claimer: 5CDY
✔ Waiting for claimer
Select code provided by claimer: C8UX

Maintenant, Bob a une part des deux dont il a besoin. Il peut donc répéter le processus avec Arnold.

# Bob
parsec-cli invite claim "parsec3://127.0.0.1:6770/Org?no_ssl=true&a=claim_shamir_recovery&p=xBCEREHKItJ0lPzzEuk-8q0N"
# ...
Out of 2 shares needed for recovery, 1 were retrieved.
Choose a person to contact now: Arnold <arnold@example.com> - 1 share(s)
Invitation greeter: Arnold <arnold@example.com>
✔ Waiting the greeter Arnold <arnold@example.com> to start the invitation procedure
Select code provided by greeter: DL9Q
Code to provide to greeter: 2VWL
✔ Waiting for greeter
✔ Waiting for greeter
Enter device label: label
✔ Recovering device
Enter password for the new device:
Confirm password:

Une fois les codes SAS échangés, Bob peut configurer son nouvel appareil à l’aide d’une étiquette et d’un mot de passe. Le processus de récupération partagée est ainsi entièrement achevé.