Concepts clés et protocoles

Définition des concepts clés

Préambule

Quelques notions clés sont utiles pour aller plus loin dans la documentation. Ils sont résumés ici, et quelques liens de documentation informative sont proposés.

Pour de la documentation normative, consultez le Référentiel Général de Sécurité de l'ANSSI et ses annexes B1 et B2.

Cryptographie asymétrique

Il s’agit d’un moyen cryptographique permettant à n’importe qui de protéger un message qui sera lisible uniquement du destinataire voulu. La protection est effectuée grâce à la clé publique du destinataire d’un message. Le message peut ensuite être déchiffré par le destinataire grâce à sa clé privée.

Pour en savoir plus, consultez la page Wikipédia dédiée.

Cryptographie symétrique

Il s’agit d’un moyen cryptographique permettant de protéger un email ou un document à l’aide d’un secret partagé appelée clé symétrique. En effet, à l’inverse du chiffrement asymétrique, lors du chiffrement symétrique, le même secret sert à la fois à chiffrer et à déchiffrer le message.

Pour en savoir plus, consultez la page Wikipédia dédiée.

Concepts liés à Seald

Partant de ces deux notions génériques basiques, nous avons des concepts liés à nos protocoles de chiffrement.

Message

Un Message est un document, un email, ou un fichier en tout genre qu'un utilisateur souhaite sécuriser.

MessageID

Au début du chiffrement, le client Seald effectue une requête auprès des serveurs Seald afin d'assigner au Message lui assigner un identifiant unique appelé MessageID.

MessageKey

Il s’agit du terme employé pour désigner la clé symétrique nécessaire au déchiffrement d’un Message.

EncryptedMessageKey

Il s’agit d’une MessageKey, protégée à l’aide de la clé publique d’un destinataire d’un fichier. La clé privée du destinataire est nécessaire afin de récupérer une MessageKey à partir d’une EncryptedMessageKey.

EntrustedMessageKey

Il s’agit d’une MessageKey, protégée de façon à ce qu’uniquement les serveurs Seald puissent récupérer la MessageKey. Cela est utilisé dans le cas où le destinataire n’a pas la solution Seald installée, et n’a donc pas de clé privée.

Modes de chiffrement

  • 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 l'algorithme AES256_CBC et vérifiés par HMAC_SHA256 en mode encrypt_then_hmac. Les clés de message sont sécurisées par RSA en mode OAEP (tel que défini dans la norme PKCS #1) avec des clés de 4096 bits, 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 l'algorithme AES256_CBC et vérifiés par HMAC_SHA256 en mode encrypt_then_hmac et les serveurs Seald deviennent tiers de confiance, le déchiffrement se réalisera par une authentification du destinataire dans le navigateur.

Présentation des protocoles

Inscription

L’inscription à la solution Seald se fait de la façon suivante :

  1. Lorsqu’un utilisateur installe Seald pour la première fois, l’application génère une paire de clé asymétrique ;
  2. La clé publique est ensuite envoyée aux serveurs Seald, et une identité Seald est créée pour cet utilisateur (Seald_ID) ;
  3. Pour s’authentifier, l’utilisateur effectue une requête aux serveurs Seald, qui lui répondront un « challenge » à signer avec sa clé privée afin de propuver son identité. Cette opération est complétement transparente pour l’utilisateur, et ne nécessite aucun mot de passe ;
  4. À 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), une nouvelle paire de clé publique / privée est générée sur le nouvel équipement, et peut être rattachée au Seald_ID déjà existant via un protocole de signature mutuelle.

Chiffrement d'un Message à destination d'un utilisateur de Seald

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 :

  1. Une MessageKey est générée localement sur l’ordinateur de l’utilisateur souhaitant protéger un document ;
  2. Si les destinataires du message ne sont pas en cache dans l’application, leurs clés publiques sont récupérées sur les serveurs de Seald (à partir de leurs adresses email) ;
  3. Pour chaque clé publique ainsi récupérée, un EncryptedMessageKey est ainsi générée localement sur le poste de l’utilisateur souhaitant chiffrer le Message ;
  4. 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 ;
  5. À 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.

Chiffrement d’un Message à destination d’un utilisateur n’ayant pas la solution

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 :

  1. Une MessageKey est générée localement sur l’ordinateur de l’utilisateur souhaitant protéger un document ;
  2. 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 ;
  3. À 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 d’un Message par un utilisateur de Seald

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 :

  1. Le MessageID ainsi que la forme chiffrée du Message peuvent être récupérés à partir du fichier au format propriétaire Seald ;
  2. Une requête est effectuée aux serveurs Seald pour vérifier si une EncryptedMessageKey correspondant au MessageID existe pour l’utilisateur ;
  3. A partir de l’EncryptedMessageKey, et grâce à sa clé privée, l’utilisateur peut récupérer la MessageKey nécessaire au déchiffrement du fichier ;
  4. 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.) ;
  5. Le document ainsi déchiffré est ensuite ouvert, la version déchiffrée sera supprimée une fois le travail sur ce document terminé.

Déchiffrement d’un Message par un utilisateur n’ayant pas la solution

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 :

  1. Le fichier au format propriétaire « Seald » est présenté sous l’extension « .shtml », ainsi, il sera directement ouvert dans le navigateur de l’utilisateur si Seald n’est pas installé. Si cela n'était pas le cas, une page de déchiffrement manuelle est mise à disposition ici ;
  2. 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 ;
  3. L’utilisateur doit ensuite s’authentifier sur les serveurs de Seald par email afin de prouver son identité ;
  4. Une fois authentifié, l’utilisateur envoie une requête sur les serveurs de Seald afin de vérifier qu’un EntrustedMessageKey lui est attribué ;
  5. A partir de l’EntrustedMessageKey, les serveurs Seald lui communique la MessageKey du document, nécessaire au déchiffrement du fichier ;
  6. 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.

Révocation d’accès à un Message

La révocation de l’accès à un document s’effectue tout simplement en supprimant l’EncryptedMessageKey ou l’EntrustedMessageKey d’un utilisateur dans la base de données. Pour cela, seulement le propriétaire du document ou l’administrateur peuvent effectuer cette action, soit directement depuis l’application, soit via le tableau d’administration.

Journalisation des événements

Le fonctionnement de Seald veut que pour lire un message un destinataire doit effectuer des requêtes sur les serveurs Seald afin de récupérer une EntrustedMessageKey ou EncryptedMessageKey.

Ainsi, toutes les actions liées à un Message sont journalisées et disponibles des utilisateurs et administrateurs. Ces actions sont (de façon non exhaustive) :

  • Authentification des utilisateurs ;
  • Ajout d’un équipement à un compte ;
  • Création d’un Message ;
  • Ajout d'un destinataire à un Message ;
  • Lecture d’un Message avec Seald ;
  • Lecture d’un Message sans Seald ;
  • Échec de lecture d’un Message avec Seald (utilisateur non autorisé ou révoqué) ;
  • Échec de lecture d’un Message sans Seald (utilisateur non autorisé ou révoqué).