Pre­mière approche de cryp­tage sur IBM i DB2

Pre­mière approche de cryp­tage sur IBM i DB2

mer 25 septembre 2019 0 Par Ibmiiste

Vous avez besoin de sto­cker des don­nées sen­sibles en base comme des numé­ros de carte de cré­dit, des mots de passe ou des infor­ma­tions plus géné­ra­le­ment liées au RGPD.

SQL offre des fonc­tions simples d’u­ti­li­sa­tion pour chif­frer ou déchif­frer les données.

Chif­fre­ment

SQL offre une fonc­tion de base pour chif­frer les don­nées que vous vou­lez stocker. 

SET ENCRYPTION PASSWORD = ‘PHRASE_SECRETE’;
INSERT INTO Client_Moyen_paiement VALUES(‘JOSHUA’, ENCRYPT_TDES(‘1111222233334444’));

Dans l’exemple ci-des­sus, une clef de chif­fre­ment est four­ni avec la fonc­tion ENCRYPTION PASSWORD.
Dans l’in­ser­tion, la fonc­tion ENCRYPT_TDES assure le chif­fre­ment du numé­ro de carte de cré­dit de Joshua selon la clef de cryp­tage pré­cé­dem­ment défi­ni avant son sto­ckage dans la table.
Nous pou­vons voir que le cryp­tage peut être appli­qué assez fine­ment puisque nous pou­vons choi­sir sur quel champ l’appliquer.

Déchif­fre­ment

Pour décryp­ter la valeur, rien de plus simple, il suf­fit de défi­nir le même mot-clef qu’au moment du cryp­tage, puis d’u­ti­li­ser la fonc­tion DECRYPT_CHAR sur le champ à déchif­frer. Voi­ci un exemple pour récu­pé­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é­sen­tés, le mot-clef est en clair. Il est néces­saire de voir à le sécu­ri­ser éga­le­ment. Nous ver­rons quelques pos­si­bi­li­tés dans d’autres articles pour le faire.

Ci-des­sous le docu­ment qui a ser­vi à écrire cet article et pour aller plus loin :

Et pour aller encore plus loin, les 308 pages du Redbook :