Protocoles
Depuis l'application Seald
Inscription
L’inscription à la solution Seald se fait de la façon suivante :
- Lorsqu’un utilisateur installe Seald pour la première fois, l’application génère deux paires de clés asymétrique. La première est utilisée pour prouver son identité, appelé signingKey, et la deuxième pour le chiffrement, appelé encryptionKey;
- Les deux clés publiques sont ensuite envoyées aux serveurs Seald, et une identité Seald est créée pour cet utilisateur SealdID ;
- La chaine de signatures associée au compte est initialisée par l'ajout d'une transaction liant ces clés au compte.
- Pour s’authentifier, l’utilisateur effectue une requête aux serveurs Seald, qui lui répondront un « challenge » à signer avec sa signingKey afin de prouver son identité. Cette opération est complètement transparente pour l’utilisateur, et ne nécessite aucun mot de passe ;
- À sa première utilisation, il n’y a encore aucune adresse email rattachée au compte de l’utilisateur. L’application invitera donc l’utilisateur à renseigner son adresse email, celle-ci sera ensuite vérifiée par un mot de passe à usage unique. Ce lien permet à n’importe quel utilisateur de retrouver les clés publiques des destinataires des messages.
Lorsqu’un utilisateur installe Seald sur un appareil supplémentaire (mobile ou ordinateur), deux nouvelles paires de clés publique / privée sont générées sur le nouvel équipement, et peuvent être rattachées au SealdID déjà existant via un protocole de signatures mutuelles.
Chiffrement de fichiers
Il existe deux modes de chiffrement pour les fichiers :
- Mode de chiffrement bout-en-bout (end-to-end) : ce mode est utilisé lorsque l'émetteur et le destinataire possèdent l'application Seald. Seald sécurise les emails et documents à l'aide de chiffrement symétrique. Les clés de message sont elles sécurisées par chiffrement asymétrique, en utilisant une clé privée ne transitant jamais sur nos serveurs.
- Mode de chiffrement authentifié : ce mode est utilisé lorsque le destinataire ne possède pas l'application Seald. Seald sécurise les emails et documents uniquement à l'aide de chiffrement symétrique, et les serveurs Seald deviennent tiers de confiance, le déchiffrement se réalisera par une authentification du destinataire dans le navigateur.
Mode de bout-en-bout
Chiffrement
Le chiffrement d’un Message par un utilisateur possédant la solution Seald à destination d’utilisateurs ayant également Seald se fait de la façon suivante :
- Une MessageKey est générée localement sur l’ordinateur de l’utilisateur souhaitant protéger un document ;
- Si les destinataires du message ne sont pas en cache dans l’application, les clés publiques de leurs encryptionKeys sont récupérées sur les serveurs de Seald (à partir de leurs adresses email) ;
- Pour chaque clé publique ainsi récupérée, une EncryptedMessageKey est ainsi générée localement sur le poste de l’utilisateur souhaitant chiffrer le Message ;
- Le client Seald effectue ensuite une requête aux serveurs Seald afin de générer un MessageID. À cette requête est également attaché l’ensemble des EncryptedMessageKey afin qu’elles puissent être récupérées par leurs destinataires respectifs ;
- À partir du Message chiffré à l’aide de la MessageKey et du MessageID, le fichier au format propriétaire Seald est ensuite généré, prêt à être envoyé aux destinataires.
Déchiffrement
Une fois un Message protégé avec Seald, le déchiffrement de ce document par un utilisateur possédant la solution Seald se fait de la façon suivante :
- Le MessageID ainsi que la forme chiffrée du Message peuvent être récupérés à partir du fichier au format propriétaire Seald ;
- Une requête est effectuée aux serveurs Seald pour vérifier si une EncryptedMessageKey correspondant au MessageID existe pour l’utilisateur ;
- À partir de l’EncryptedMessageKey, et grâce à la clé privée de son encryptionKey, l’utilisateur peut récupérer la MessageKey nécessaire au déchiffrement du fichier ;
- Le logiciel Seald déchiffre le fichier dans un répertoire temporaire, et vérifie si le nom du fichier coïncide avec l'original. Si cela n’est pas le cas une alerte demandant à l’utilisateur de vérifier si le fichier est bien celui qu’il souhaite ouvrir (et non un fichier « .exe », « .vbs », etc.).
- Le document ainsi déchiffré est ensuite ouvert, la version déchiffrée sera supprimée une fois le travail sur ce document terminé.
Mode authentifié
Chiffrement
Le chiffrement d’un Message par un utilisateur possédant la solution Seald à destination d’utilisateurs n’ayant pas Seald se fait de la façon suivante :
- Une MessageKey est générée localement sur l’ordinateur de l’utilisateur souhaitant protéger un document ;
- Le client Seald effectue ensuite une requête aux serveurs Seald afin de générer un MessageID. À cette requête est également attaché la MessageKey pour chaque destinataire n’ayant pas Seald afin d’être convertie en EntrustedMessageKey pour pouvoir être récupérée par leurs destinataires respectifs après authentification.
- À partir du document chiffré à l’aide de la MessageKey et du MessageID, le fichier au format propriétaire Seald est ensuite généré, prêt à être envoyé aux destinataires.
Déchiffrement
Une fois un Message protégé avec Seald, le déchiffrement de ce document par un utilisateur ne possédant pas la solution Seald se fait de la façon suivante :
- Le fichier au format propriétaire « Seald » est présenté sous l’extension « .seald ». Pour le déchiffrer, l'utilisateur doit utiliser la page de déchiffrement mise à disposition ici ;
- L’utilisateur sera invité à cliquer sur un bouton, récupérant ainsi les primitives cryptographiques permettant de déchiffrer le message depuis nos serveurs web. Le MessageID ainsi que la forme chiffrée du Message sont injectés dans le contexte de la page de déchiffrement ouverte dans le navigateur ;
- L’utilisateur doit ensuite s’authentifier sur les serveurs de Seald par email afin de prouver son identité ;
- Une fois authentifié, l’utilisateur envoie une requête sur les serveurs de Seald afin de vérifier qu’un EntrustedMessageKey lui est attribué ;
- A partir de l’EntrustedMessageKey, les serveurs Seald lui communique la MessageKey du document, nécessaire au déchiffrement du fichier ;
- Toujours dans le navigateur, le fichier est ensuite déchiffré, et si le format le permet (PDF, documents Office, ...), l’affiche directement dans le navigateur, à défaut il est proposé au téléchargement.
Contrôle d'accès
Avec les protocoles de chiffrement de Seald, il est possible d'effectuer un certain nombre d'opérations a posteriori sur les EntrustedMessageKey et les EncryptedMessageKey d'un Message, comme la journalisation des activités, la révocation ou l'ajout de destinataire.
Ajout de destinataire
Un utilisateur de Seald destinataire d'un Message peut ajouter un autre destinataire avec ou sans Seald:
- Obtenir, comme pour un déchiffrement, l'EncryptedMessageKey qui lui est destinée pour ce Message.
- Déchiffrer l'EncryptedMessageKey qui lui est destinée pour obtenir la MessageKey du Message.
- Si le destinataire dispose de Seald (mode de bout-en-bout), chiffrer la MessageKey pour les clés publiques des encryptionKey de cet utilisateur pour obtenir des EncryptedMessageKey à l'attention de chacune de ses clés publiques. Sinon (mode authentifié), convertir la MessageKey en EntrustedMessageKey pour le destinataire.
- Envoyer les EncryptedMessageKey ou l'EntrustedMessageKey aux serveurs Seald attachées au MessageID.
Révocation de destinataire
Un utilisateur de Seald ayant autorisé quelqu'un d'autre (au travers d'un chiffrement de bout-en-bout ou authentifié), il peut également lui révoquer l'accès.
Il lui suffit de contacter le serveur Seald en indiquant vouloir révoquer le Message pour un destinataire en particulier. Le serveur supprimera ainsi les EncryptedMessageKey ou EntrustedMessageKey correspondantes.
Journalisation des actions
Chaque action impliquant les serveurs Seald effectuée sur un Message est journalisée, comme un chiffrement, déchiffrement, ajout de destinataire ou révocation. La liste comprenant l'ensemble des évènements est disponible ici.
Envoi de fichiers
Depuis l'application de bureau Seald, il est possible de générer un lien de partage de la forme suivante :
https://decrypt.seald.io/decrypt/#LGknPgbURSCvfcIGNR56Ba_h9v+WYlpwaX8mbqNZRQchwArVK2sG1XiMULlamXRYBLUTyFDMMw+Q3XMJiwUAB58+EpmP6HsXeOjutvdsJRrEw
Les personnes autorisées à déchiffrer le document pourront télécharger le fichier chiffré et l'ouvrir soit via l'application de bureau soit via le mode authentifié.
Génération du lien
- le fichier est chiffré pour les destinataires pour donner un fichier au format seald chiffré de bout-en-bout pour les destinataires dotés d'un compte Seald, et en mode authentifié pour les destinataires qui n'en sont pas dotés ;
- une nouvelle MessageKey2 est générée localement sur l’ordinateur de l’utilisateur souhaitant générer un lien pour un document ;
- le client Seald chiffre cette MessageKey2 pour ses propres clés publiques pour obtenir une EncryptedMessageKey2 et l'envoie au serveur qui lui attribue un MessageID2. Cela n'est fait que pour pouvoir reconstituer le lien a posteriori ;
- le client Seald chiffre le fichier (déjà chiffrement normalement avec Seald) avec cette MessageKey2 pour donner un fichier sur-chiffré ;
- le client Seald demande au serveur un UploadID ;
- le client Seald envoie le fichier sur-chiffré au serveur ;
- le client Seald constitue un lien au format
https://send.seald.io/decrypt/#UploadID_MessageKey2
où MessageKey2 et UploadID sont encodés en base64.
On remarque dans ce protocole que le serveur ne peut avoir connaissance de MessageKey2 puisque seul le hash d'URL du lien la contient, et ce hash d'URL ne transite pas sur le serveur.
On remarque également que la seule connaissance du lien ne suffit pas à lire le document, puisque le fichier envoyé au serveur est déjà chiffré avec le protocole de chiffrement de fichier classique de Seald.
Cela fait que le fichier, bien qu'hébergé sur le serveur de Seald, est illisible par le serveur, et que le lien de partage n'est pas transférable.
Ouverture du lien
- l'utilisateur ouvre le lien au format
https://send.seald.io/decrypt/#UploadID_MessageKey2
dans un navigateur récent (Internet Explorer n'est pas supporté) ; - le client léger Seald en Javascript télécharge le fichier sur-chiffré associé à l'UploadID ;
- le client léger Seald en Javascript déchiffre ce fichier sur-chiffré avec MessageKey2 ;
- le fichier seald est disponible soit au téléchargement soit à la prévisualisation en suivant les méthodes de déchiffrement d'un fichier Seald (soit de bout-en-bout, soit authentifiée).
Depuis Seald Filedrop
Chiffrement
Le chiffrement d’un fichier ou de plusieurs fichiers par une personne possédant le lien d'une page Seald Filedrop se fait de la façon suivante (pour 1 fichier donné) :
- Les clés publiques des destinataires de la page sont récupérées depuis les serveurs de Seald (qui ont été préalablement associées à la page Seald Filedrop) ;
- Une clé symétrique MessageKey est générée dans le navigateur ;
- Pour chaque clé publique ainsi récupérée, une EncryptedMessageKey est générée ;
- Le fichier est chiffré à l’aide de la MessageKey et envoyé chiffré aux serveurs de Seald ;
- Les serveurs de Seald forment le document Seald à partir du fichier brut chiffré dans la page, et un messageID nouvellement généré.