16.6. Options de chiffrement
PostgreSQL™ offre du
chiffrement sur plusieurs niveaux et fournit une flexibilité pour
protéger les données d'être révélées suite à un vol du serveur de la
base de données, des administrateurs non scrupuleux et des réseaux
non sécurisés. Le chiffrement pourrait aussi être requis pour
sécuriser des données sensibles, par exemple des informations
médicales ou des transactions financières.
-
chiffrement du mot de passe stocké
-
Par défaut, les mots de passe des utilisateurs de la base de
données sont stockées suivant des hachages MD5, donc
l'administrateur ne peut pas déterminer le mot de passe affecté
à l'utilisateur. Si le cryptage MD5 est utilisé pour
l'authentification du client, le mot de passe non crypté n'est
jamais présent temporairement sur le serveur parce que le
client le crypte en MD5 avant de l'envoyer sur le réseau.
-
chiffrement de colonnes spécifiques
-
La bibliothèque de fonctions /contrib
pgcrypto autorise le stockage crypté
de certains champs. Ceci est utile si seulement certaines
données sont sensibles. Le client fournit la clé de décryptage
et la donnée est décryptée sur le serveur puis elle est envoyée
au client.
La donnée décryptée et la clé de déchiffrement sont présente
sur le serveur pendant un bref moment où la donnée est
décryptée, puis envoyée entre le client et le serveur. Ceci
présente un bref moment où la données et les clés peuvent être
interceptées par quelqu'un ayant un accès complet au serveur de
bases de données, tel que l'administrateur du système.
-
chiffrement de la partition de données
-
Sur Linux, le chiffrement peut se faire au niveau du montage
d'un système de fichiers en utilisant un « périphérique loopback ». ceci permet à une
partition entière du système de fichiers d'être cryptée et
décryptée par le système d'exploitation. Sur FreeBSD, la
fonctionnalité équivalent est appelé « geom based disk encryption », ou
gbde.
Ce mécanisme empêche les données non cryptées d'être lues à
partir des lecteurs s'ils sont volés. Ceci ne protège pas
contre les attaques quand le système de fichiers est monté
parce que, une fois monté, le système d'exploitation fournit
une vue non cryptée des données. Néanmoins, pour monter le
système de fichiers, vous avez besoin d'un moyen pour fournir
la clé de chiffrement au système d'exploitation et, quelque
fois, la clé est stocké quelque part près de l'hôte qui monte
le disque.
-
chiffrement des mots de passe sur le
réseau
-
La méthode d'authentification md5
crypte deux fois le mot de passe sur le client avant de
l'envoyer au serveur. Il le crypte tout d'abord à partir du nom
de l'utilisateur puis il le crypte à partir d'un élément du
hasard envoyé par le serveur au moment de la connexion. Cette
valeur, deux fois cryptée, est envoyée sur le réseau au
serveur. Le double chiffrement empêche non seulement la
découverte du mot de passe, il empêche aussi une autre
connexion en utilisant le même mot de passe crypté pour se
connecter au serveur de bases de données lors d'une connexion
future.
-
chiffrement des données sur le réseau
-
Les connexions SSL cryptent toutes les données envoyées sur le
réseau : le mot de passe, les requêtes et les données
renvoyées. Le fichier pg_hba.conf
permet aux administrateurs de spécifier quels hôtes peuvent
utiliser des connexions non cryptées (host) et lesquels requièrent des connexions SSL
(hostssl). de plus, les clients
peuvent spécifier qu'ils se connectent aux serveurs seulement
via SSL. stunnel ou
ssh peuvent aussi être
utilisés pour crypter les transmissions.
-
authentification de l'hôte ssl
-
Il est possible que le client et le serveur fournissent des
clés SSL ou des certificats à l'autre. Cela demande une
configuration supplémentaire de chaque côté mais cela fournit
une vérification plus forte de l'identité que la simple
utilisation de mots de passe. Cela empêche un ordinateur de se
faire passer pour le serveur assez longtemps pour lire le mot
de passe envoyé par le client. Cela empêche aussi les attaques
du type « man in the
middle » où un ordinateur, entre le client et le
serveur, prétend être le serveur, lit et envoie les données
entre le client et le serveur.
-
chiffrement côté client
-
Si vous n'avez pas confiance en l'administrateur système, il
est nécessaire que le client crypte les données ; de cette
façon, les données non cryptées n'apparaissent jamais sur le
serveur de la base de données. Les données sont cryptées sur le
client avant d'être envoyé au serveur, et les résultats de la
base de données doivent être décryptés sur le client avant
d'être utilisés.
|