Chiffrement
Concept
Lorsque le chiffrement est activé, les fichiers manipulés par FlowerDocs sont protégés en cas d’accès au système de fichiers par un assaillant. Les fichiers sont ainsi rendus illisibles, il est donc nécessaire de disposer de la clé secrète pour les déchiffrer.
FlowerDocs utilise un chiffrement symétrique (par défaut AES 256
par bloc) pour chiffrer à la fois les contenus de documents et les fichiers temporaires.
Pour activer la protection des contenus par chiffrement, il est nécessaire d’ajouter la propriété file.encrypt.enabled=true
dans le fichier de configuration core.properties
.
En effet, S3 gère nativement le chiffrement des fichiers stockés.
Le chiffrement/déchiffrement effectué par S3 est transparent pour FlowerDocs.
Avec S3, la propriété file.encrypt.enabled=true
ne doit pas être présente dans le fichier de configuration core.properties
.
Gestion de clé
La sécurisation de la clé est un enjeu essentiel lors de l’utilisation du chiffrement. Une même clé secrète est utilisée pour une plateforme FlowerDocs. Cette clé doit donc être configurée pour chaque instance de FlowerDocs Core. Différentes stratégies de gestion sont possibles :
Clé dérivée
La clé secrète utilisée pour le chiffrement peut être dérivée à partir d’une chaîne de caractères (file.encrypt.passphrase
).
La dérivation de clé est réalisée à l’aide de l’algorithme PBKDF2
, de la fonction HMAC
utilisant la fonction de hachage SHA-256
et de 65536 itérations.
Par défaut la taille de cette clé est de 256bits. Sa taille peut être augmentée ou réduite grâce à la propriété file.encrypt.key-length
(taille en bits).
Magasin de clés
La clé secrète utilisée pour le chiffrement peut être stockée dans un magasin de clé (ou keystore) au format PKCS12. L’utilisation d’un magasin de clés requiert sa configuration à l’aide des propriétés :
key-store.path
: chemin vers le fichier de magasin de clés (exemple :file:/data/flowerdocs.pfx
)key-store.password
: mot de passe du magasin de clés
Le magasin de clés peut contenir plusieurs clés. Afin d’identifier celle à utiliser, il est nécessaire de renseigner les propriétés file.encrypt.key.alias
et
file.encrypt.key.password
. Ces propriétés définissent respectivement l’alias et le mot de passe de la clé renseignée lors de l’enregistrement dans le magasin de clés.
Algorithme
Par défaut, l’algorithme utilisé est AES/CBC/PKCS5Padding
. L’utilisation d’un autre algorithme est possible à l’aide de la propriété file.encrypt.algorithm
.
Par exemple, l’algorithme DES est déconseillé.
Chiffrement d’un système de fichier
Le CLM, utilitaire en ligne de commande, permet de chiffrer les fichiers non-chiffrés stockés sur système de fichiers en utilisant les mêmes informations que pour les instances de FlowerDocs Core utilisés :
- la clé secrète
- la taille de clé
- l’algorithme de chiffrement
Pour plus de détails, une partie est dédiée à son utilisation ci-dessous.
Intégrité
Pour assurer l’intégrité des fichiers stockés à travers les web services exposés par FlowerDocs Core, un mécanisme d’empreinte est activé par défaut.
Lors de la copie sur le système de fichier, le hash de chaque fichier est calculé à partir de l’algorithme configuré. Le résultat et l’algorithme utilisé sont stockés avec les informations du fichier dans OpenSearch.
Par défaut, l’algorithme utilisé est SHA-256
. L’utilisation d’un autre algorithme est possible à l’aide de la propriété file.hash.algorithm
et une des valeurs supportées par la JVM (voir MessageDigest).
Utilitaire
Analyse de répertoire
L’analyse d’un répertoire avant le chiffrement de son contenu permet de connaître la volume du répertoire à chiffrer ainsi que son nombre de fichiers. Le calcul est effectué de façon récursive.
L’analyse du répertoire est effectué à l’aide du job dir analyze
du CLM prenant en paramètre le répertoire à analyser dans le paramètre input
.
java -jar flower-docs-clm-2.8.2-bundle.jar dir analyze --input=<répertoire à analyser>
--output=<chemin vers le rapport>
permet de créer un rapport à la fin de l’analyse.
Chiffrement de répertoire
L’objectif étant de chiffrer le répertoire pour qu’il soit lisible par les différentes instances de FlowerDocs Core, une configuration identique à ceux-ci doit être utilisée.
Le chiffrement du répertoire est effectué à l’aide du job dir encrypt
du CLM.
Il nécessite les paramètres suivants, quelque soit le type de chiffrement utilisé :
input
: le répertoire à chiffreroutput
: le répertoire cible dans lequel sera créé la copie chiffrée du répertoire fourni dans le paramètreinput
conf
: le chemin vers le fichier de configuration contenant les information concernant le magasin de clés ou la passphrase
La commande à exécuter est la suivante :
java -jar flower-docs-clm-2.8.2-bundle.jar dir encrypt --input=<répertoire à chiffrer> --output=<répertoire cible chiffré> --conf=<fichier de configuration>
Clé dérivée
Afin de chiffrer un répertoire en utilisant un stratégie avec clé dérivée, le paramètre à fournir est conf
avec pour valeur le chemin d’un fichier de configuration contenant les informations mentionnées dans la partie Clé dérivée ainsi que l’activation du chiffrement :
#Activation du chiffrement
file.encrypt.enabled=true
#Gestion par clé dérivé
file.encrypt.passphrase=MaPassphrase
Magasin de clés
Afin de chiffrer un répertoire en utilisant un stratégie de magasin de clé, le paramètre à fournir est conf
avec pour valeur le chemin d’un fichier de configuration contenant les informations mentionnées dans la partie Magasin de clés ainsi que l’activation du chiffrement :
#Activation du chiffrement
file.encrypt.enabled=true
#Gestion par magasin de clés
key-store.path=file:PATH
key-store.password=****
file.encrypt.key.alias=my-file-encryption-key-alias
file.encrypt.key.password=****