L'objectif du projet est de mettre en place un serveur de documents hautement sécurisé visant à protéger des documents confidentiels produits et partagés par un petit nombre de personnes (CEO, conseil d'administration...).

Contexte

Ce serveur doit permettre aux membres de différents groupes de travail de partager des documents, les groupes étant eux-mêmes cloisonnés entre eux : les membres d'un groupe ne peuvent pas avoir accès aux documents d'un autre. Des zones de stockage personnelles sont également utiles. Les groupes évoluent dans le temps et il doit être possible d'ajouter un membre à un groupe, lui donnant ainsi l'accès à toutes les données du groupe, ou de retirer un membre d'un groupe, rendant les données inintelligibles pour lui (sans pouvoir bien entendu protéger les données auxquelles il a déjà eu accès).

Une solution impliquant le chiffrement des fichiers pour empêcher l'accès par des personnes non-autorisées est souhaitable. Dans la mesure du possible, la solution devrait s'intégrer dans la politique générale de sécurité en vigueur dans l'entreprise, par exemple via l'utilisation de carte à puce pour authentifier les utilisateurs ou chiffrer/déchiffrer les données.

Ce serveur devra intégrer la sécurité de manière aussi transparente que possible, et permettre l'emploi des outils actuellement utilisés (par exemple FileMaker...).

La solution devra en outre intégrer un système de sauvegarde permettant de recouvrir les données en cas de problème majeur. L'existence de ce système ne doit pas compromettre la sécurité des données. Les différents risques de perte de données doivent être pris en compte, tant les données elles-mêmes que la perte des clefs de chiffrement.Cette sauvegarde devra être efficace : sauvegarde incrémentale plutôt que copie brute de l'ensemble des données sécurisées.

Enfin, il est demandé de réfléchir à la possibilité de limiter les accès aux administrateurs système.

Chiffrement individuel des zones

L’une des premières décisions à prendre est de savoir si l'on désire recourir au chiffrement individuel des zones utilisateur. Avec une solution de ce type, la zone de chaque utilisateur (ou de chaque groupe d'utilisateurs) est chiffrée avec une clef différente et cette clef ne réside pas sur le serveur. De cette façon, l'accès aux données est impossible pour qui ne possède pas la ou les clefs de déchiffrement, quels que soient les droits d'accès qu'il possède ou obtient sur le serveur.

L'alternative est de faire confiance au système d'authentification et de gestion des droits du système d'exploitation. Celui-ci est alors responsable d'accorder ou de refuser l'accès aux différentes zones de fichiers, tout en ayant lui-même la possibilité d'accéder à l'ensemble de ceux-ci. Il est à noter que, dans tous les cas de figure, nous aurons recours au chiffrement des données.

Dans le scénario sans chiffrement individuel, l'ensemble des disques sera néanmoins chiffré pour éviter les risques liés au vol du serveur ou à la copie brute des disques durs. Il convient de réfléchir à l’emploi de solution matérielle afin de garantir au mieux le stockage des clefs de chiffrement.

Du point de vue de la mise en œuvre, un grand nombre de difficultés potentielles se présentent dès lors que l'on veut empêcher les programmes d'accéder directement aux données.

Problématique inhérente au chiffrement de base de données

En ce qui concerne la sécurisation de la base de données, la solution idéale serait un logiciel de base de données supportant le chiffrement individuel des données propres à chaque utilisateur. Une telle solution semble cependant très difficile à mettre en œuvre.

Une solution intermédiaire qui nous semble réalisable, bien qu'exigeant un effort conséquent, est de constituer plusieurs bases de données de groupes et d'étendre le moteur de base de données aux fonctionnalités lui permettant de déchiffrer au vol les données auxquelles il accède.

Pour pouvoir mettre en œuvre une telle solution, il importe de pouvoir identifier de manière claire un nombre restreint de groupes, aux fonctions et privilèges bien identifiés, et relativement stables dans le temps (ce qui n'empêche évidemment pas d'ajouter ou de retirer des membres à ces groupes).

Applications devant fonctionner sur le serveur

Une question importante, particulièrement au vu de la complexité inhérente aux programmes de base de données telle que décrite ci-dessus, est de bien cerner l'usage qui doit être fait de ce serveur, ainsi que les applications que l'on désire y voir tourner.

Chiffrement de fichiers vs. Chiffrement de « zone »

Une solution simple à mettre en œuvre pour sécuriser un ensemble de documents consiste à maintenir telle quelle la structure des documents et à chiffrer les documents eux-mêmes. Les utilisateurs peuvent alors accéder aux documents comme auparavant, mais doivent utiliser leur clef pour déchiffrer les documents eux-mêmes et accéder à leur contenu.

Accès transparent vs. Étape d'authentification

Un compromis est toujours nécessaire entre la sécurité et la convivialité d'une application. S'il est évident que les utilisateurs finaux préfèrent toujours avoir un accès aussi aisé que possible, un certain nombre d'étapes de contrôle restent néanmoins souhaitables.

Accès autorisé aux administrateurs système ou non ?

Indépendamment de savoir si l’on chiffre individuellement les données ou non, il est possible d'interdire l'accès aux données par les administrateurs système. Ceci peut évidemment être souhaitable, tant pour les propriétaires des documents confidentiels que pour les administrateurs système eux-mêmes, mais restreint également la portée des interventions de ces derniers en cas de problème. Des solutions existent et sont envisageables pour pallier à ces problèmes.

Limites de la sécurisation

Il est extrêmement important de bien comprendre les limites du processus de sécurisation des données. L'objectif de la mission envisagée ici est de sécuriser des données stockées sur un serveur distant, ainsi que de les protéger durant leur transit vers le client (connexion chiffrée).