# Smart Assistant

Seald Smart assistant est un moteurs de DLP (Data Loss Protection), permetant d’implémenter un système de règles pour détecter les email sensible et empêcher leur envois sans protection.

# Fonctionnement pour l'utilisateur

Lorsque l'utilisateur va envoyer un e-mail, il va être analysé par le script mentionné ci-après pour proposer à l'utilisateur plusieurs choix selon les cas:

# Règles recommandées et forcées

Les règles peuvent être configurées pour proposer ou forcer l'utilisateur à chiffrer les pièces jointes seulement ou le corps de mail et pièces jointes. L'utilisateur peut outrepasser les règles recommandées. Les règles forcées bloquent l'envoi sans chiffrement approprié.

# Mise en place des règles

Le smart assistant utilise un fichier de règles, rédigé en javascript. Ce script doit être nommé rules.js, et placé à la racine du dossier de configuration de Seald. Celui-ci se trouve au chemin suivant :

  • Windows : %APPDATA%\Seald\
  • macOS : ~/Library/Application Support/Seald/
  • Linux : ~/.config/Seald/

Une fois le fichier de règles installé, il est nécessaire de relancer l'application pour que la modification soit prise en compte.

# Activation de la fonctionnalité

Le smart assistant peut être activé / désactivé depuis le menu d'options de l'extension. Il peut également être configuré de façon programmatique en modifiant la configuration de l'extension.

# Écriture du script

# Exemple de script

Un exemple de script peut-être téléchargé ici et directement utilisé.

# Fonctionnement

Le script est au format Javascript (la bibliothèque standard de Node.JS 10 est disponible) et communique avec l'application de bureau par IPC. Voici le squelette qui doit être suivi pour personnaliser le script :

const CLEARTEXT = 0
const ENCRYPTED_ATTACHMENTS_ONLY = 1
const ENCRYPTED_BODY_AND_ATTACHMENTS = 2

process.on('message', ({ to = [], cc = [], cci = [], subject = '', body = '', attachments = [] }) => {
    try {
      // Écrire ici les étapes permettant de déterminer la sensibilité de l'envoi au format:
      const result = {
        // Il s'agit du niveau forcé minimum.
        // S'il est à ENCRYPTED_ATTACHMENTS_ONLY alors l'utilisateur sera obligé de chiffrer au moins les pièces jointes.
        // S'il est à ENCRYPTED_BODY_AND_ATTACHMENTS alors l'utilisateur sera obligé de chiffrer corps de mail et pièces 
        // jointes.
        levelForced: CLEARTEXT,
      
        // Il s'agit du niveau recommandé minimum.
        // S'il est à ENCRYPTED_ATTACHMENTS_ONLY alors l'utilisateur se verra proposé de chiffrer au moins les pièces
        // jointes.
        // S'il est à ENCRYPTED_BODY_AND_ATTACHMENTS alors l'utilisateur se verra proposé de chiffrer corps de mail et
        // pièces jointes.
        levelRecommended: ENCRYPTED_BODY_AND_ATTACHMENTS,

        // Il s'agit de la listes des informations à retranscrire à l'utilisateur dans la fenêtre qui s'affichera.
        // Cela n'est pas utilisé pour déclencher l'affichage de la fenêtre.
        matches: [{
          levelRecommended: ENCRYPTED_BODY_AND_ATTACHMENTS,
          message: 'Il semblerait que votre message contienne une information confidentielle.'
        }]
      }
      process.send({ code: 0, data: result })
      process.exit(0)
    } catch (error) {
      process.send({ code: 1, data: error.stack })
      process.exit(1)
    }
  })