Définitions
Partant des notions de chiffrement symétrique & asymétrique, voici quelques définitions liées aux protocoles de Seald.
Utilisateur
Un utilisateur est l'entité (usuellement une personne) qui utilise le SDK au travers de l'application dans laquelle le SDK est intégré (comme l'application de bureau Seald).
Il est désigné par son id
généré par le serveur Seald lors de la création de compte. Cet identifiant est parfois appelé "sealdId
" ou "Seald userId
".
SigningKey
Une paire de clés publique / privée utilisée par un Utilisateur pour signer et s'authentifier.
EncryptionKey
Une paire de clés publique / privée utilisée par un Utilisateur pour chiffrer et déchiffrer.
Identité
On appelle une Identité la réunion d'une SigningKey et d'une EncryptionKey d'un Utilisateur. On pourra parler de la "partie privée" ou de la "partie publique" d'une Identité pour désigner respectivement les clés privées ou publiques de l'Identité.
Les clés d'une Identité peuvent être renouvelées, et une Identité peut être révoquée.
Une Identité est parfois appelée "Device" ou "Key" (notamment dans la dashboardAPI) et est désignée par son id
générée par le serveur Seald lors de sa création (parfois appelé "deviceId
" ou "keyId
").
Un Utilisateur peut avoir plusieurs Identités, chacune avec une SigningKey et une EncryptionKey différente, qui sont mutuellement signées dans la Chaîne de signatures pour garantir que personne ne peut arbitrairement ajouter une Identité à un Utilisateur.
Chaîne de signatures
Un mécanisme de vérification d'intégrité des Identités d'un Utilisateur est disponible dans Seald, il est expliqué en détails dans la partie dédiée.
De façon simplifiée, chaque opération de création, de renouvellement des clés ou de révocation d'une Identité est enregistrée dans une chaîne (la Chaine de signatures ou Sig-Chain) sous forme d'un bloc. Chaque bloc contient les informations de l'opération et le hash du bloc précédent.
Chaque ajout de bloc à la chaîne est signé par la SigningKey d'une Identité en cours de validité de cet Utilisateur, hormis le premier bloc qui est auto-signé et les blocs de révocations qui peuvent être arbitrairement ajoutés via l'API de Seald.
En connaissant le hash du dernier bloc de la Sig-Chain d'un Utilisateur, on peut prouver l'intégrité de la liste de ses Identités transférée par le serveur Seald.
Message
Un Message est un élément à protéger tel qu'une chaine de caractères, un email ou un fichier en tout genre qu'un Utilisateur souhaite sécuriser.
MessageID
Au début du chiffrement, le SDK effectue une requête auprès des serveurs Seald afin d'assigner au Message 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 de bout-en-bout à l’aide de la clé publique de l'EncryptionKey d’un destinataire d’un Message. La clé privée du destinataire de l'EncryptionKey est nécessaire afin de récupérer une MessageKey à partir d’une EncryptedMessageKey.
EntrustedMessageKey
Il s’agit d’une MessageKey protégée au repos 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’est pas un Utilisateur de Seald, et n'a donc pas d'Identité et donc pas d'EncryptionKey pour laquelle chiffrer.