[Actualit�] Dangers du chiffrement (cryptage) des donn�es d'une base de donn�es MySQL/MariaDB
par
, 26/03/2024 � 09h28 (11277 Affichages)
Le chiffrement des donn�es dans MySQL/MariaDB est trompeur, inefficace et m�me dangereux, dans les versions communautaires libres et m�me dans certaines autres distributions payantes.
Voici pourquoi...
En effet, bien qu'il existe quelques possibilit�s de chiffrement dans MySQL/MariaDB aucune n'est efficace ni pertinente...
Dans les grands SGBDR le chiffrement le plus employ� est le "Transparent Data Encryption" aussi appel� TDE, qui consiste � chiffrer le stockage des bases au niveau du disque. Les donn�es restent claires en m�moire et ce n'est que lorsqu'il faut lire les donn�es sur les disques ou les �crire que le chiffrement d�chiffrement s'effectue. Pour cela le SGBDR doit imp�rativement g�rer directement son stockage sans passer par la couche syst�me (ce que font IBM DB2; Oracle Database ou Microsoft SQL Server).
Or ce n'est pas le cas de MySQL/MariaDB qui d�l�gue lectures et �critures disque � la couche OS....
Bien que MySQL propose le chiffrement "InnoDB Data-at-rest Encryption" cela ne concerne que les tables innodb...
Il y a bien un TDE dans l'�dition Enterprise.... (payante...), mais le probl�me est que dans le TDE de l'�dition Enterprise, les tables temporaires ne sont pas chiffr�es, les sauvegardes (dump) non plus, et les performances s�v�rement d�grad�es...
Quant � chiffrer certaines colonnes de certaines tables, l� aussi les m�thodes mises en �uvre dans MySQL sont pauvres, inefficaces et inutiles !
Le chiffrement des mots de passe est bas� sur l'algorithme SHA-1 (160 bits) non sal�...
Or la CNIL indique que pour les donn�es de sant� (un exemple parmi d'autres... idem dans le monde bancaire notamment) le hachage doit se faire avec un algorithme d'au moins 80 bits et sal� ! Ce que ne permet pas MySQL...
C'est pourquoi il fait souvent l'objet de p�nalit�s pour les clients qui utilisent des bases de donn�es MySQL/MariaDB...
� titre d'exemple, Microsoft SQL Server utilise un chiffrement de type SHA_512 (512 bits, donc trois fois plus lourd que MySQL/MariaDB) avec salage interne.
NOTE : qu'est-ce que le salage du chiffrement ?
Cela consiste � introduire une information relativement "al�atoire", en compl�ment de l'information que l'on veut chiffrer, afin que deux valeurs identiques une fois chiffr�es avec le param�tre de salage ne donnent pas la m�me valeur de chiffrement afin de lutter contre l'attaque d'informations chiffr�e par analyse fr�quentielle. Par exemple le chiffrement de deux patronymes identiques "DUPONT" aff�rents � deux personnes physiques diff�rentes devrait donner pour l'un une valeur binaire diff�rente de l'autre. La figure ci-apr�s donne un exemple de chiffrement dans Microsoft SQL Server ou l'on voit bien que le m�me patronyme est chiffr� de deux mani�res diff�rentes :
NOTE : qu'est-ce que l'analyse fr�quentielle ?
C'est une technique de cassage du chiffre par analyse de la fr�quence d'apparition des m�mes donn�es chiffr�es pour toute ou partie d'une valeur chiffr�e dans une collection de valeurs dont on sait que certaines valeurs peuvent �tre r�p�titives et dont on connait la loi de distribution, m�me de mani�re approximative. Par exemple le nom DUPONT est le 22e nom de famille le plus fr�quent en France...
Autre probl�matique, le chiffrement des colonnes des tables n'existe pas en standard dans MySQL. Il faut recourir � un plugin externe, qui limite le chiffrement � l'algorithme AES en128, 192 ou 256 bits.
Quatre inconv�nients : (1) un module externe sensible que des personnes malveillantes peuvent modifier facilement ou supprimer et (2)qui impose d'utiliser le mot de passe en clair � un moment dans les applications, (3) la limitation de la cl� de chiffrement et le (4) fait que les donn�es chiffr�es ne sont pas sal�es...
Cette derni�re probl�matique est extr�mement grave, car le salage du chiffrement est indispensable dans les donn�es des bases. En effet, les bases de donn�es portant d�importantes collections de donn�es, une attaque par analyse fr�quentielle des donn�es chiffr�es est ais� sur des donn�es dont on connait la distribution statistique, comme les patronymes (voir https://www.geneanet.org/genealogie/), les pr�noms (https://www.insee.fr/fr/statistiques...mmaire=7635552), les donn�es comptables (loi de Benford), les num�ros de s�curit� sociale�
De m�me, les applications devant chiffrer ou d�chiffrer doivent � un moment avoir le mot de passe en clair.... Ce qui veut dire qu'il suffit d'avoir acc�s au code de l'application pour p�ter le chiffrement... C'est comme si vous fermiez votre voiture � cl� en laissant les cl�s sur la porte !
Autrement dit le chiffrement dans MySQL ne sert � rien...
� titre d'exemple, Microsoft SQL Server utilise un chiffrement interne syst�matiquement sal�, par cl� sym�trique, asym�trique, certificat, mot de passe, et avec les algorithmes : RC2, RC4, RC4_128, DES, TRIPLE_DES, TRIPLE_DES_3KEY, DESX, AES (128, 192, 256), RSA (512, 1024, 2048, 3072, 4096)...
De plus pour s�curiser le chiffrement, les cl�s sont prot�g�es par une hi�rarchie de clefs depuis la cl� d�instance puis la cl� de la base, qui prot�ge les cl�s cr�es par SQL Server pour le chiffrement des donn�es. Et pour qu'il ne soit pas n�cessaire d'exposer la moindre cl� dans les applications, le d�chiffrement peut �tre automatis� sans jamais exposer le mot de passe (DECRYPTBYKEYAUTOASYMKEY, DECRYPTBYKEYAUTOCERT) ou encore par des vues de d�chiffrement situ�es dans d�autres bases...
Enfin, il est possible de d�l�guer la gestion des cl�s de ,SQL Server par un boitier �lectronique s�curis� (� Hardware Security Module � technologie appel� EKM : Extensible Key Management) qui s'autod�truit en cas d'intrusion... Exemple Thales Luna
Enfin, le fin du fin est d'utiliser le chiffrement de bout en bout qui laisse les donn�es chiffr�es dans la base et les v�hicules chiffr�es jusqu'� l'application qui peut les d�chiffrer pour les afficher. Par exemple la technologie "AlwaysEncrypted" de Microsoft SQL Server. De m�me le traitement des donn�es chiffr�es peut utiliser des zones de m�moire r�serv�es, inaccessibles � d'autres processus, car la m�moire peut aussi �tre lue par des processus malveillants. On appelle cela des enclaves m�moire s�curis�es et cela existe pour Microsoft SQL Server avec la technologie Secure Enclaves...
Tout cela n'existe pas dans MySQL, m�me dans la version Enterprise, par ce que MySQL/mariaDB n'est pas un SGBD d'entreprise, mais sert surtout � des CMS ou des blogs et n'a aucune vocation a traiter des donn�es de sant� ou des donn�es financi�res... ou de quelconques donn�es sensibles comme la paye...