Première approche de cryptage sur IBM i DB2
mer 25 septembre 2019Vous avez besoin de stocker des données sensibles en base comme des numéros de carte de crédit, des mots de passe ou des informations plus généralement liées au RGPD.
SQL offre des fonctions simples d’utilisation pour chiffrer ou déchiffrer les données.
Chiffrement
SQL offre une fonction de base pour chiffrer les données que vous voulez stocker.
SET ENCRYPTION PASSWORD = ‘PHRASE_SECRETE’; INSERT INTO Client_Moyen_paiement VALUES(‘JOSHUA’, ENCRYPT_TDES(‘1111222233334444’));
Dans l’exemple ci-dessus, une clef de chiffrement est fourni avec la fonction ENCRYPTION PASSWORD.
Dans l’insertion, la fonction ENCRYPT_TDES assure le chiffrement du numéro de carte de crédit de Joshua selon la clef de cryptage précédemment défini avant son stockage dans la table.
Nous pouvons voir que le cryptage peut être appliqué assez finement puisque nous pouvons choisir sur quel champ l’appliquer.
Déchiffrement
Pour décrypter la valeur, rien de plus simple, il suffit de définir le même mot-clef qu’au moment du cryptage, puis d’utiliser la fonction DECRYPT_CHAR sur le champ à déchiffrer. Voici un exemple pour récupérer le numéro de carte de crédit de JOSHUA :
SET ENCRYPTION PASSWORD = ‘PHRASE_SECRETE’; SELECT nom, DECRYPT_CHAR(Numero_carte_CR) FROM Client_Moyen_paiement;
Bien sur, dans les cas présentés, le mot-clef est en clair. Il est nécessaire de voir à le sécuriser également. Nous verrons quelques possibilités dans d’autres articles pour le faire.
Ci-dessous le document qui a servi à écrire cet article et pour aller plus loin :
Et pour aller encore plus loin, les 308 pages du Redbook :