Vue d'ensemble
L'objectif de la technologie Seald est de protéger des données dans une application en partant du principe que les serveurs de l'application peuvent devenir malveillants.
Faiblesse du chiffrement en transit & au repos
De façon générale, lorsque l'on développe une application, celle-ci est utilisée pour intermédier des données entre plusieurs utilisateurs.
Une méthodologie classique pour intégrer une politique de chiffrement dans une telle application est d'ajouter du chiffrement en transit et au repos (éventuellement avec une gestion dans clés déportée dans un KMS) tel que décrit dans le schéma ci-dessous.
N'employer que du chiffrement en transit et au repos introduit une faiblesse structurelle : le Back-end dispose des données en clair (a minima au cours de l'exécution).
WARNING
Si le Back-end est compromis, l'ensemble des données auxquelles ce Back-end a accès peut être compromis.
Attitude défensive vis-à-vis de l'hébergeur
Ce que propose Seald est d'adopter une attitude défensive vis-à-vis de l'hébergeur et considérer que celui-ci puisse être compromis.
Pour étayer un peu plus les motivations de cette attitude qui peut sembler radicale, vous pouvez vous reporter à notre livre blanc.
Chiffrement côté client
La seule façon d'assurer qu'un hébergeur (que l'on considère comme malveillant) ne peut lire les données est de ne pas lui permettre de lire les données qu'il manipule au moyen de chiffrement dit "de bout-en-bout" qui est effectué côté client.
Seald propose une solution permettant "clé-en-main" de mettre en oeuvre du chiffrement côté client dans des applications web, mobile et de bureau.
Schéma de principe
De façon simplifiée, voici la façon dont le Seald-SDK s'intègre :
Les données sont chiffrées au moyen du Seald-SDK depuis le front-end de l'application (web, mobile, desktop).
Le Seald-SDK utilise pour cela l'identité de l'utilisateur qui est générée lors de la création du compte et récupérable au moyen d'une des trois méthodes proposées :
- stockage sécurisé : l'identité est stockée localement sur l'appareil (en utilisant une base de données locale persistante) ;
- protection par mot de passe : l'identité est chiffrée au moyen d'un mot de passe connu de l'utilisateur en utilisant
@seald-io/sdk-plugin-ssks-password
; - protection en 2-man-rule : l'identité est coupée en deux "moitiés" et répartie entre deux entités de confiance en utilisant
@seald-io/sdk-plugin-ssk-2mr
;
Le Seald-SDK distribue les clés pour les destinataires au travers de l'API Seald qui permet de :
- récupérer les identités publiques des autres utilisateurs ;
- créer une nouvelle clé et la distribuer chiffrée de bout-en-bout à d'autres utilisateurs ;
- autoriser, révoquer d'autres utilisateurs ou groupes à accéder à une donnée précédemment chiffrée ;
- récupérer une clé chiffrée pour soi-même afin de déchiffrer une donnée précédemment chiffrée.
Pour plus d'information, pouvez aller voir la specification des algorithmes cryptographiques utilisés, ainsi que celle des protocoles de chiffrement.