# Chiffrement anonyme
En plus du SDK complet, Seald propose également un SDK de chiffrement anonyme. Celui-ci permet à votre application de fournir un moyen à des utilisateurs sans identité Seald (non-inscrits, ou non-connectés) de chiffrer des données pour un utilisateur avec une identité Seald. Vous pouvez également l'utiliser pour que votre serveur chiffre des données pour vos utilisateurs.
Par mesure de sécurité, votre serveur doit autoriser ces chiffrements anonymes à l'aide de JSON Web tokens.
# Import et instanciation
Le SDK de chiffrement anonyme de Seald s'importe de façon séparée du SDK complet.
# Navigateur
Il y a trois manières d'utiliser le SDK Anonyme dans votre navigateur, selon vos besoins et l'architecture de votre application web.
# Bibliothèque polyfillée
Cette version est déjà empaquetée, transpilée et minifiée pour l'utilisation dans un navigateur web. Elle inclut toutes les bibliothèques, dépendances et polyfills nécessaires à son fonctionnement.
Utilisez cette méthode si vous utilisez un bundler comme webpack, mais que vous ne voulez pas configurer ce bundler pour inclure les polyfills nécessaires.
# Bibliothèque
Ceci importe @seald-io/sdk/browser/anonymous-sdk.js
, qui est la version pour le navigateur.
Utilisez cette méthode si vous utilisez un bundler comme Webpack. Pour cela, referez-vous à la section Empaquetage personnalisé et transpilation du guide sur les imports.
Cette méthode est recommandée, puisqu'elle permet de diminuer la duplication des dépendances et polyfills, et donc minimiser la taille finale de votre application.
# Bundle
Copiez le fichier @seald-io/sdk/browser/anonymous-sdk.browser.js
, puis
importez-le via une balise <script>
:
Cette version est déjà empaquetée, transpilée et minifiée pour l'utilisation dans un navigateur web. Elle inclut toutes les bibliothèques, dépendances et polyfills nécessaires à son fonctionnement.
Elle expose le constructeur du SDK Anonyme dans la variable globale
window.AnonymousSDK
.
# Node.js / Electron
import { AnonymousSDKBuilder } from '@seald-io/sdk'
const anonymousSDK = AnonymousSDKBuilder({ apiURL })
Cela importe la version empaquetée pour les projets Node.js.
Elle peut être utilisée pour un serveur NodeJS, une application de bureau en Electron, des tests unitaires, etc.
# React-Native
# Installation
Le SDK Anonyme pour react-native a des "peer dependencies" qui doivent être installées séparément :
react-native-modpow
react-native-get-random-values
Vous pouvez les installer avec la commande:
npm i -S react-native-modpow react-native-get-random-values
# Bundle
Si vous ne configurez pas vous-même la transpilation de votre application, vous pouvez utiliser la version empaquetée, transpilée et minifiée du SDK Anonyme. Elle est utilisable telle quelle.
# Bibliothèque
Si votre application est elle-même transpilée, vous pouvez importer la librairie source. Cela vous permettra alors d'optimiser la taille de votre application.
Cette bibliothèque devra être transpilée pour être utilisée. Pour cela, referez-vous à la section Empaquetage personnalisé et transpilation du guide sur les imports.
# JSON Web Tokens
Par mesure de sécurité, votre serveur doit autoriser ces chiffrements anonymes à l'aide de JSON Web tokens.
Pour la génération des JSON Web Tokens, référez-vous à cette documentation
# Informations sur les JSON Web Token
Le chiffrement anonyme s'effectue en deux étapes
- récupération des clés de chiffrement des destinataires
- création du message pour ces destinataires
Chacune de ces deux étapes doit être autorisée par un JSON Web Token.
TIP
La récupération de clés de destinataires peut nécessiter plusieurs requêtes. Il
est donc fortement déconseillé de définir un jti
sur le JWT en question, sinon
les requêtes après la première pourraient échouer. Il est par contre recommandé
de définir un iat
pour limiter dans le temps l'utilisation du JWT en question.
Au contraire, la création de message se fait en une seule requête. Il est donc
recommandé de définir à la fois un iat
, pour limiter dans le temps
l'utilisation du JWT, et un jti
, pour éviter que le même JWT soit utilisé
plusieurs fois pendant l'intervalle de temps autorisé.
TIP
Même si techniquement rien n'empêche d'utiliser un seul JWT pour les deux
opérations, il est recommandé de créer deux JWT différents pour la récupération
de clés et pour la création de message, afin de pouvoir définir un jti
sur le
JWT de création de message, pour que celui-ci ne puisse être utilisé qu'une
seule fois.
# Utilisation
Vous avez maintenant tout le nécessaire pour faire un chiffrement anonyme. Cela
se fait avec la fonction
anonymousSDK.encrypt
.
Les arguments à noter de cette fonction sont:
clearFile
: Obligatoire. Le fichier à chiffrer. Peut être unstring
, unBuffer
, unBlob
, un WebStreamReadableStream
, ou un stream NodeReadable
. Si vous utiliser unReadableStream
ou unReadable
, vous devrez également donner l'argumentfileSize
.getKeysToken
: Facultatif. Le JWT utilisé pour la récupération de clé. S'il n'est pas fourni, la récupération de clé utiliseraencryptionToken
.encryptionToken
: Obligatoire. Le JWT utilisé pour la création de message.sealdIds
: Obligatoire. Tableau des Seald IDs des destinataires du message à créer.
Le retour de cette fonction est une Promise
, contenant :
id
: un string, ID du message nouvellement créé.encryptedFile
: fichier nouvellement chiffré, au même format que le format duclearFile
donné.
Exemple d'utilisation :