Architecture
Aperçu
Parsec est divisé en un client (responsable d’exposer les données à l’utilisateur ainsi que de gérer la couche cryptographique) et le serveur (servant à stocker les données chiffrées ainsi qu’à notifier les clients des actions des autres utilisateurs telles une modification d’un fichier ou un nouveau partage).
Le serveur Parsec ne requiert qu’une base de données PostgreSQL pour les métadonnées (qui sont chiffrées par les clés des appareils dans leur majorité) et un stockage objet Amazon S3 ou OpenStack Swift pour les blobs binaires (qui sont tous chiffrés en utilisant des clés de l’Espace de Travail, qui ne quittent pas les appareils des utilisateurs). Il est possible de mettre en place un système de redondance avec de multiples fournisseurs de cloud différents.
Modèle de sécurité Parsec
Parsec sécurise les données sensibles avant qu’elles ne soient stockées sur les clouds publics, en procédant en trois étapes :
Découpage en blocs des fichiers avant chiffrement;
Chiffrement de chaque bloc par une clé symétrique différente (BLOCK_ENC_KEY);
Chiffrement des métadonnées (arborescence, composition des fichiers, les BLOCK_ENC_KEY, information de partage) par la clé privée de l’utilisateur (USER_ENC_S_KEY).
Séparation des acteurs
Utilisateur : représente une personne physique dans Parsec. Un utilisateur dispose d’une clé asymétrique (USER_ENC_S_KEY / USER_ENC_P_KEY) lui permettant de chiffrer des données uniquement pour lui tel que son User Manifest (voir ci-dessous).
Le Poste de Travail : support physique – ordinateur fixe ou portable.
Appareil : c’est par l’intermédiaire d’un appareil (device) que l’utilisateur accède à Parsec. Chaque utilisateur a potentiellement plusieurs appareils (ex: un pour son ordinateur fixe et un autre sur son portable). Chaque appareil possède sa propre clé asymétrique de signature (DEVICE_SIG_S_KEY / DEVICE_SIG_P_KEY) permettant de signer les modifications qu’il a réalisées.
Modèle de données Parsec
File Manifest : contient le nom du fichier, la liste des blocs qui le composent et les BLOCK_ENC_KEY associées.
Folder Manifest : index qui contient un ensemble d’entrées, chaque entrée étant un File Manifest ou un autre Folder Manifest.
Workspace Manifest : index similaire au Folder Manifest, mais pouvant être partagé entre plusieurs utilisateurs.
User Manifest : index racine propre à chaque utilisateur et contenant les Workspace Manifests partagés avec celui-ci.
Modèle de partage de données
Espace de Travail : un groupe d’utilisateurs partageant un même espace de confiance. Parsec effectue le partage de données sensibles via le chiffrement de la clé de workspace (WS_ENC_KEY) par la clé du destinataire du partage (USER_ENC_P_KEY) – cette étape de chiffrement est répétée autant de fois qu’il y a de destinataires.
Organisation : un ensemble des espaces de travail et un ensemble d’utilisateurs membres de l’organisation. L’accès à un espace de travail ne peut être accordé qu’aux membres de l’organisation. Deux organisations distinctes ne peuvent pas accéder au même espace de travail.