Introduction et quelques notions à connaître

Continuons notre passage en revue des "bonnes pratiques" à mettre en œuvre sur sa plate-forme SAS.
Je ne vous apprends rien, mais lorsque les utilisateurs accèdent à des données dans une base de données à distance via l'application SAS, un identifiant utilisateur de base de données valide et un mot de passe sont nécessaires.
Peu importe le domaine où vous œuvrez, la sécurité est l’affaire de tous, non ?
Une méthode pour permettre un accès est de créer un identifiant de connexion pour chaque utilisateur dans chaque base de données. Bien-sur cette méthode est soumise au risque d’une exposition des mots de passe utilisateur dans les programmes SAS.
Ce billet présente une solution simple pour surmonter ce problème. En effet, je vais vous présenter la procédure
PROC PWENCODE (sas encrypt password) qui vous permettra dissimuler les mots de passe à la vue des petits curieux…
J’imagine que dans votre société, la plupart des données sont stockées dans une ou plusieurs bases de données et, bien sûr, les utilisateurs ont besoin d’accéder à la base pour extraire et analyser vos précieuses données.
SI précieuses que vous ne souhaitez pas que tout le monde puisse y accéder, c’est pour cette raison que chaque personne souhaitant y jeter un coup d’œil doit posséder un compte utilisateur et un mot de passe. Comme dans n’importe quel environnement un peu sécurisé.
Aussi, afin de permettre aux utilisateurs d'accéder à leurs données à partir de l'application SAS d'une manière simple tout en garantissant la sécurité, il est donc indispensable de crypter le mot de passe.

Le cryptage implique la transformation des données d'une forme à l'autre à l'aide d'opérations mathématiques et, en général, une valeur de
clé. D’ailleurs, je ne sais pas que vous en pensez, mais je ne devrais pas utiliser le mot
cryptage, utilisé à tort par tous, mais plutôt
chiffrement, c’est-à-dire le procédé avec lequel nous allons rendre la compréhension d’un mot de passe impossible à toute personne qui n’a pas la
clé de déchiffrement.
Aussi le décryptage consiste à retrouver ce mot de passe correspondant à une chaîne chiffré sans posséder la clé de déchiffrement ( les anglosaxons « cassent » le code). Ainsi, mis au regard du couple chiffrer/déchiffrer et du sens du mot «
décrypter », le terme «
crypter » n’a pas de raison d’être. En faisant bêtement un anglicisme, on ajoute un mot, «
cryptage », dans la langue française, mais on perd un sens, celui de la différence entre «
déchiffrement « et «
décryptage » !
Comme ça je me chipote ?
Revenons à nos moutons et à notre procédure
PWENCODE. Elle permet de coder, chiffrer, crypter (appelez ça comme vous voulez) les mots de passe. Ces mots de passe codé peuvent être utilisés à la place des mots de passe «
en clair » dans les programmes SAS.
Et c’est bien ça le plus important, non ?
Présentation de la procédure
|
PROC PWENCODE IN = 'password' OUT=fileref METHOD=encodingmethod; RUN ; |
Il y a 2 options et 3 différents paramètres disponibles pour la procédure.
Le
<OUT = fileref> est utilisé pour spécifier une référence de fichier pour le mot de passe codé.
Aussi, pour capturer le mot de passe codé dans une utilisation de fichier externe, utilisé
<OUT = fileref>. Sinon, le mot de passe codé est simplement affiché dans le journal SAS.
Il existe 3méthodes d’encodage et de cryptage (sas001 à sas003) qui se servent de différentes clés d’encodage (32-bit, 256-bit, ..) et différents algorithmes (SASProprietary, AES, …).
Méthode |
Description |
Algorithme utilisé |
sas001 |
Mot de passe chiffré avec base64 |
aucun |
sas002 (sasenc) |
Mot de passe chiffré avec une clé de 32bits |
Algorithme propriétaire SAS |
sas003 |
Mot de passe chiffré avec une clé de 256bits avec une clé de salage 16 bits |
Algorithme AES, disponible avec SAS/SECURE |
sas005 |
Mot de passe chiffré avec une clé de 256bits avec une clé de salage 64 bits |
Algorithme AES, disponible avec SAS 9.4 |

Comme vous le lisez, Sas003 utilise un chiffrement AES avec une clé de 256 bits, un des algorithmes de cryptage le plus fréquemment utilisé et le plus sécuritaire. Il y a quelques années, des chercheurs ont publié une méthode d’attaque permettant de récupérer la clé secrète utilisée pour un chiffrement AES .Mais n’ayez crainte, la méthode seulement a été publié car, encore aujourd’hui, avec un trillion de machines, chacune pouvant tester un milliard de clés par seconde, cela prendrait plus de deux milliards d'années pour récupérer une clé AES 128 bits.
C’est pour cette raison que l’AES est le standard de cryptage préféré pour les gouvernements, les banques et les systèmes de haute sécurité.
Exemples d'utilisation
Prenons cette instruction libname :
|
libname xe oracle user=sas pw=sas path="ora12"; |
L’idée est de rendre illisible le mot de passe. J’utilise la proc PWENCODE pour encoder mon mot de passe :
|
proc pwencode in='sas' method=sas003; run; |
Le résultat s’affiche dans le journal sas :

Je peux maintenant utiliser ce mot de passe chiffré pour me connecter à la base :
|
libname xe oracle user=sas pw="{SAS003}80C025BC51C7C1C18C1F8012405962F2447F" path="ora12"; |
Notre mot de passe est maintenant à l’abri des yeux trop curieux !
Les méthodes Sas003 et sas004 utilisé des clés 256 bits plus une clé de salage (salt). Ce salage permet de renforcer la sécurité des informations qui sont destinées à être hachées en y ajoutant une donnée supplémentaire afin d’empêcher que deux informations identiques conduisent à la même empreinte. Le but du salage est de lutter contre les attaques utilisant des
rainbow tables.
Sans clé de salage, un mot de passe comme titi sera immédiatement trouvé dans les rainbow tables. Avec une clé de salage, non.
Aussi, chaque fois que vous exécutez la proc pwencode, le résultat est différent.
Avec SAS004, nouveauté SAS 9.4, la taille du salt a été augmentée à 64 bits pour se conformer à la taille minimale recommandée
pour PKCS # 5 v2.0
Comme je l'ai indiqué plusieurs fois, pour pouvoir utiliser AES, vous devez avoir le produit SAS/SECURE. Si vous ne disposez pas de SAS/SECURE, ou si sa licence est expirée, vous pouvez avoir le message suivant :
|
ERROR: Failed to load encryption algorithm. ERROR: Aucune sortie générée. ERROR: Extension introuvable : (tkersa) |
Une seule solution, utiliser une autre méthode pour encoder votre mot de passe :
|
proc pwencode in='sas' method=sas002; run; |
Vous obtenez alors la chaine suivante :
Mais, comme je vous l’ai indiqué au début de cet article, l'utilisation de AES est la méthode plus sûre pour protéger vos informations d'identification SAS Metadata. Cerise sur le gateau, SAS/SECURE est intégré par défaut avec SAS 9.4.
Dans quels cas est-il possible de chiffrer ses mots de passe ?
PWENCODE permet l’encodage de vos mots de passe pour:
- SAS Datasets,…
- Bases de données (DB2, ORACLE,…)
- Serveurs SAS/CONNECT
- Serveurs SAS/SHARE
- Serveurs SAS IOM (Metadata Server,…)
Il est ainsi possible d’utiliser l’encodage pour cacher le mot de passe de votre utilisateur SAS :
|
options metaserver='monserveursas' metaport=8565 metaprotocol=bridge metauser='sasadm@saspw' metapass='{SAS003}90ED74188FAC68A410654A87F9C972D650AF' metarepository='Foundation'; |
Bien sûr, si vous utilisez le mot de passe SAS003 pour vous connecter à SMC, via un copier/coller par exemple, cela ne fonctionnera pas :

Alors, bien sûr, cette façon de « cacher » les mots de passe n’est pas parfaite mais apporte déjà un premier niveau de confidentialité, surtout lorsqu’il est nécessaire de cacher un mot de passe d’un utilisateur du domaine et le rendre ainsi inutilisable ailleurs que pour une connexion SAS.
La PROC PWENCODE est destiné à empêcher une visualisation facile de mots de passe. Toutefois, vous ne devriez pas dépendre à complètement de la PROC PWENCODE pour tous vos besoins de sécurité des données; surtout si vous êtes fasse à un attaquant déterminé et compétent !
Si les concepts de sécurité vous intéressent je vous invite à lire la
documentation SAS sur le sujet et proposant une vue d'ensemble de l'encryption dans SAS 9.4
Pour finir sur une petite note d’humour et pour vous aider à bien assimiler certains concepts de l’art de la cryptographie, je vous propose cette petite illustration qui parlera sans aucun doute à l’âme de geek qui sommeille en vous :
Références
Encryption in SAS® 9.4
PROC PWENCODE Statement
Encoding the Password A low maintenance way to secure your data access
Keep your database passwords out of the clear: Quick and easy tips to protect yourself
http://tinyurl.com/PWENCODE