La chronique SAS – chiffrement des données et encodage des mots de passe

le 16 février 2012 à 11:45
dtalbot

La chronique SAS
Sylvain Tremblay, Groupe de formation – Institut SAS (Canada) inc.

“Tire la chevillette, la bobinette cherra.”

Aujourd’hui, tout comme à l’époque de Perrault, nous cherchons à nous protéger des gens trop curieux et des voleurs, et ce en utilisant plusieurs moyens, par exemple une porte bien barrée. Dans nos milieux de travail, il en va de même pour les données.

Vous avez des fichiers de données SAS et vous cherchez à les sécuriser? Vous désirez contrôler qui peut les lire ou les modifier? Soyez rassuré, il existe plusieurs moyens de le faire. Certains sont simples et disponibles à même le module SAS/Base. D’autres sont plus sophistiqués et nécessitent le module SAS/Secure. Dans cet article, j’aimerais aborder deux techniques de base : le chiffrement (“encryption”) des fichiers de données et l’encodage des mots de passe.

Chiffrement des fichiers de données

Le chiffrement d’un fichier de données SAS offre un certain niveau de sécurité. Une fois chiffré avec un mot de passe, seulement ceux qui ont ce dernier peuvent lire, écrire ou modifier le fichier, dépendamment de la protection. Ceci est vrai à l’intérieur ou à l’extérieur de SAS (par exemple si le fichier est copié sur un CD ou envoyé par courriel). On doit noter que l’on ne peut pas chiffrer une vue SAS car cette dernière ne contient pas de données. Si un fichier de données SAS est chiffré, ses index seront aussi chiffrés. Le chiffrement demande approximativement les mêmes ressources CPU que la compression d’un fichier de données.

Afin de chiffrer un fichier de données, on doit utiliser l’option ENCRYPT=YES dans une étape DATA en spécifiant au minimum un mot de passe avec l’option PW=. Il y a toutefois des limitations pour ce dernier. Il doit être un nom SAS valide et avoir au maximum 8 caractères (sous Windows). Les autres options possibles qui peuvent accompagner le ENCRYPT=YES sont :

  • READ= (sert à spécifier un mot de passe pour la lecture),
  • WRITE= (sert à spécifier un mot de passe pour l’écriture),
  • ALTER= (sert à spécifier un mot de passe pour modifier).

Si l’on ne spécifie que les options ENCRYPT=YES et PW=, alors le fichier sera automatiquement chiffré pour la lecture, l’écriture et la modification. Le programme suivant illustre cette approche (voir encadré 1).

Encadré 1

Si l’on consulte ensuite le fichier journal après l’exécution de l’étape DATA, on constate que SAS a masqué le mot de passe (voir encadré 2).

Encadré 2

Lors de l’exécution de la procédure CONTENTS, SAS va nous demander le mot de passe car le fichier de données a été chiffré pour la lecture (voir encadré 3).

Encadré 3

Une fois le mot de passe entré (de façon interactive), SAS va déchiffrer les données, les lire, exécuter la procédure et afficher les résultats dans la fenêtre de sortie. Lors de l’examen de cette sortie, on remarque alors la présence de deux nouveaux attributs :
Protection (READ/WRITE/ALTER)
Encrypted (YES)
Ces attributs nous indiquent que le fichier de données a été chiffré et que l’utilisation du mot de passe est nécessaire pour sa lecture, son écriture ou sa modification (voir encadré 4).

Encadré 4

Le fichier de données SAS est maintenant chiffré et il sera difficile pour les personnes non autorisées de l’utiliser. Mise en garde : ne perdez pas le mot de passe! Il vous sera en effet impossible d’accéder à votre fichier sans l’aide du personnel de SAS. Ce processus prend du temps et des ressources significatives et ne doit être utilisé qu’en dernier recours.

Mais que faire si vous devez travailler avec un fichier de données chiffré mais que vous n’êtes pas dans une session interactive avec SAS, lorsque le programme est exécuté par un ordonnanceur (scheduler) par exemple? En effet, SAS va ouvrir une fenêtre et va vous inviter à entrer le mot de passe, mais vous ne serez pas devant votre écran. La solution est simple : vous pouvez utiliser l’option de fichier de données PW= dans votre code pour spécifier directement le mot de passe. Dans l’exemple suivant, cette option est utilisée avec la procédure PRINT (voir encadré 5).

Encadré 5

Le tour est joué… mais d’un point de vue sécurité, cela n’est pas l’idéal car votre mot de passe est dans le programme au vu et au su de tous! Que faire? Il s’agit simplement d’encoder votre mot de passe.

Encodage des mots de passe

La procédure PWENCODE du module SAS/Base permet l’encodage des mots de passe. La sortie, sous la forme d’une chaîne de caractères, inclut un « tag » qui identifie la chaîne de caractères (le mot de passe) qui a été encodée. Un exemple de tag est {sas002}. Le tag indique la méthode d’encodage. Il existe trois méthodes d’encodage (sas001 à sas003) qui se servent de différentes clés d’encodage (32-bit, 256-bit, ..) et différents algorithmes (SASProprietary, AES, …).
La méthode d’encodage sas002 utilise une clé de 32-bit et l’algorithme SASProprietary qui vient avec le module SAS/Base.

Le programme suivant illustre comment encoder le mot de passe et le sauvegarder dans un fichier externe (voir encadré 6). Cela doit être fait dans un programme à part, séparé de votre programme principal afin d’isoler votre mot de passe.

Encadré 6

Notre mot de passe est maintenant à l’abri des yeux trop curieux. Le fichier ainsi créé est un fichier texte et si on l’ouvre avec un éditeur, tout ce que l’on voit est le tag et une chaîne de caractères (voir encadré 7).

Encadré 7

Ensuite, dans le programme principal qui doit traiter les données, notre but est d’utiliser le mot de passe sans que ce dernier n’apparaisse. Pour ce faire, on peut utiliser une étape DATA nulle afin de lire et déposer le mot de passe encodé dans une variable macro grâce à la routine SYMPUT et ensuite on n’a qu’à appeler cette dernière dans nos traitements (voir encadré 8). N’oubliez pas d’utiliser les doubles guillemets lorsque vous faites appel au mot de passe car vous appelez une variable macro.

Encadré 8

Conclusion

Peu importe le domaine où vous œuvrez, la sécurité est l’affaire de tous! SAS offre une panoplie de moyens pour vous permettre de sécuriser vos données. Le module SAS/Secure assure la sûreté de vos données en transit par l’entremise de protocoles tels le SSL (“Secure Sockets Layer” qui s’imbrique avec les protocoles HTTP, FTP et Telnet), le SSH (“Secure Shell”) et divers algorithmes de chiffrement (RC4, DES, AES, …).

Pour des besoins plus élémentaires, le module SAS/Base vous permet de chiffrer vos fichiers de données avec l’option ENCRYPT=YES et d’encoder vos mots de passe avec la procédure PWENCODE. Vous pouvez maintenant dormir l’esprit tranquille et tenir à l’écart le grand méchant loup!

Référence 
“Encryption in SAS 9.2”
http://support.sas.com/documentation/cdl/en/secref/62092/PDF/default/secref.pdf

Retour à la table des matières

FacebookTwitterGoogle+LinkedIn