Service du Séquestre

Le service de séquestre permet de récupérer toutes les données d’une organisation. Il ne peut être activé que lors du démarrage de l’organisation et non après.

Le cas d’utilisation typique de ce service est la réponse à une enquête menée par un service d’inspection nécessitant l’accès aux données stockées sur les espaces de travail de la (des) personne(s) impliquée(s) dans l’enquête.

Le service est géré par une clé d’autorité et une clé de service. Notez que les parties secrètes des clés d’autorité et de service ne sont utilisées qu’en mode hors ligne (c’est-à-dire qu’aucune communication directe avec le serveur Parsec n’est nécessaire), de sorte qu’elles peuvent être stockées dans un endroit sûr.

L’environnement dans lequel le service de séquestre est utilisé peut être contrôlé autant que possible.

Considérations de sécurité

Le service de séquestre utilise des clés AES-256 qui sont les éléments les plus sensibles car elles sont utilisées pour décrypter les données exportées.

Ces clés doivent donc être sauvegardées et stockées sur un support externe physiquement protégé (coffre-fort) et toutes les opérations de décryptage doivent être effectuées sur un poste de travail hors ligne.

Prérequis

Pour utiliser le service de séquestre, vous devez :

  • OpenSSL, pour la génération de clés

  • Parsec CLI (parsec-cli)

  • CLI du serveur Parsec (from pypi pip install parsec-cloud)

Clé d’autorité

Vous pouvez créer la clé d’autorité à l’aide des commandes suivantes :

openssl genrsa -aes256 -out authority_key.private 4096
openssl rsa -in authority_key.private -out authority_key.pub -pubout -outform PEM

Création et démarrage d’une organisation avec l’autorité de séquestre

./parsec-cli organization create --token=s3cr3t --addr=parsec3://<server-url> organization-sequester-test
./parsec-cli organization bootstrap --addr="parsec3://<server-url>/organization-sequester-test?a=bootstrap_organization&p=<bootstrap-token>" --device-label "my device" --label "John Doe" --email <user-email> --sequester-key ./authority_key.pub

Séquestrer la clé de service et le certificat

Vous pouvez créer la clé de service et le certificat à l’aide des commandes suivantes :

# Private key must not have passphrase
openssl genrsa -aes256 -out sequester_key.private 4096
# If it has a passphrase
openssl rsa -in sequester_key.private -out sequester_key_private_decrypted.pem
openssl rsa -in sequester_key.private -out sequester_key.pub -pubout -outform PEM
# With Parsec server CLI
# Certificate must be generated AFTER organization bootstrapped
python -m parsec sequester generate_service_certificate --service-label="Sequester service" \
--service-public-key=./sequester_key.pub --authority-private-key=./authority_key.private

Activer le service de séquestre

# On Parsec server
python -m parsec sequester create_service --db=$POSTGRESQL_URL --organization=organization-sequester-test --service-certificate=./sequester_service_certificate-ef9adae7ee9f44cc9f974fdcaaff8839-2025-02-23T21:19:35.484948Z.pem

Exportation de données avec le service séquestre

Realm vs Espace de travail : Dans le vocabulaire Parsec, Espace de travail et Realm sont les deux faces d’une même pièce. En résumé, le realm est un concept côté serveur qui fait référence à la grosse pile de données cryptées, tandis que l’espace de travail est le concept côté client qui fait référence à ces données une fois décryptées.

Par conséquent, l”« exportation de realm » est l’opération qui consiste à exporter du serveur toutes les données cryptées qui, lorsqu’elles sont utilisées avec les bonnes clés de décryptage, nous permettent d’avoir un accès en lecture complet à un espace de travail à tout moment jusqu’à la date d’exportation.

Vue d’ensemble :

  • Une organisation existe avec un espace de travail

  • Un realm est exporté à l’aide de l’interface CLI du serveur. Cela génère un grand fichier .sqlite contenant toutes les données cryptées appartenant à ce realm.

  • Le fichier d’exportation du realm est transféré vers une machine contenant les clés de décryptage :

    • Clé de service du séquestre dans le cas d’une organisation séquestrée.

    • Clé de l’appareil, sinon (c’est-à-dire décrypter l’exportation du realm à partir d’une machine normalement utilisée pour exécuter le client Parsec).

    # On Parsec server, identity real (workspace) to export
    python -m parsec human_accesses --organization=organization-sequester-test [--db=$POSTGRESQL_URL]
    python -m parsec export_realm --organization=organization-sequester-test --realm=<id-realm> [--db=$POSTGRESQL_URL --blockstore=$S3_URL]
    # This creates a file `parsec-export-$ORG-realm-$REALM-$TIMESTAMP.sqlite`.
    

Utilisation des données exportées

# This command mount a disk drive with decrypted data
./parsec-cli mount-realm-export parsec-export-organization-sequester-test-realm-f749b8035f6e4bd88e96ae557828a583-20250225T135312Z.sqlite -d sequester:7bd707ce86df42288634f2a78db7f10e:./sequester_key.private