Chiffrer et protéger ses données SAS

- SAS Proprietary Encryption.
- AES (Advanced Encryption Standard) encryption
Utilisation avec SAS Proprietary Encryption
SAS propriétaire Encryption est disponible, de base, dans tous les déploiement et utilise une technique de chiffrement avec une rolling-key 32 bits utilisé pour le chiffrement des données SAS avec des mots de passe. Cette technique utilise le mot de passe comme élément de clé pour chiffrer les données. Aussi, cette méthode fournit un niveau de sécurité moyen. En effet, les utilisateurs doivent fournir le bon mot de passe pour se voir autoriser leur accès aux données, mais avec la vitesse de calculs des ordinateurs d'aujourd'hui, votre fichier de données pourrait être soumis à une attaque de type brute-force sur les 2,563,160,682,591 combinaisons possibles. SAS Proprietary Encryption est mise en oeuvre par l’intermédiaire de l'option ENCRYPT. Comme vous vous en doutez, il s'agit d'une option de l'étape DATA et cette options est à positionner au moment de la création de votre dataset. Comme expliqué au dessus, le chiffrement se base sur un mot de passe, il faut donc en saisir un. Plusieurs possibilités : Soit, par exemple, vous utilisez l'option READ, pour empêcher les utilisateurs de lire le fichier, sauf si elles entrent dans le mot de passe; Soit PW, pour rendre la lecture, l'écriture ou la modification impossible aux utilisateurs ne connaissant pas le mot de passe.Exemple de mise en oeuvre
Créons d'abord un fichier sans aucune protection :
1 2 3 4 5 6 7 8 9 |
data test.salary; input name $ yrsal bonuspct; datalines; Muriel 34567 3.2 Bjorn 74644 2.5 Freda 38755 4.1 Benny 29855 3.5 Agnetha 70998 4.1 ; |
1 |
strings salary.sas7bdat |
1 2 3 4 5 6 7 8 9 10 11 |
SAS FILESALARY 9.0401M3Linux 2.6.32-131.6.1.e x86_64 @Muriel @Bjorn @ffffff @Freda @Benny @ffffff @Agnetha |
1 2 3 4 5 6 7 8 9 |
data test.encryptsalary(encrypt=yes read=password);; input name $ yrsal bonuspct; datalines; Muriel 34567 3.2 Bjorn 74644 2.5 Freda 38755 4.1 Benny 29855 3.5 Agnetha 70998 4.1 ; |
1 2 |
WARNING: The file TEST.ENCRYPTSALARY.DATA is not ALTER protected. It could be deleted or replaced without knowing the password. |
1 2 3 4 5 6 7 8 9 |
data test.encryptsalaryB(encrypt=yes pw=password);; input name $ yrsal bonuspct; datalines; Muriel 34567 3.2 Bjorn 74644 2.5 Freda 38755 4.1 Benny 29855 3.5 Agnetha 70998 4.1 ; |
1 |
ls -lrt |
1 2 3 |
-rw-r--r-- 1 sasts techsup 131072 May 24 04:18 salary.sas7bdat -rw-r--r-- 1 sasts techsup 131072 May 24 04:27 encryptsalary.sas7bdat -rw-r--r-- 1 sasts techsup 131072 May 24 04:27 encryptsalaryb.sas7bdat |
1 |
strings encryptsalary.sas7bdat |
1 2 3 4 5 6 7 8 9 10 11 |
SAS FILEENCRYPTSALARY 9.0401M3Linux 2.6.32-131.6.1.e x86_64 6RD8 YZBENC01j y1B8 `v3y wcK8 :Dey *=2t |
1 2 |
proc print data=test.encryptsalaryB; run; |
1 |
READ access denied. Enter the password for file TEST.ENCRYPT SALARYB.DATA |
1 2 |
WARNING: The file TEST.ENCRYPTSALARY.DATA is not ALTER protected. It could be deleted or replaced without knowing the password. |
1 2 |
ALTER access denied. Enter the password for file TEST.ENCRYPTSALARYB.DATA. ERROR: Invalid or missing ALTER password on member TEST.ENCRYPTSALARYB.DATA. |
1 2 3 |
proc sql; drop table test.encryptsalaryB; quit; |
1 2 |
ALTER access denied. WARNING: Table TEST.ENCRYPTSALARYB has not been dropped. |
Utilisation avec AES

Exemple de mise en oeuvre
Comme pour nos tests précedent, commençons par créer un fichier chiffrer :
1 2 3 4 5 6 7 8 9 |
data salary(encrypt=aes encryptkey=green); input name $ yrsal bonuspct; datalines; Muriel 34567 3.2 Bjorn 74644 2.5 Freda 38755 4.1 Benny 29855 3.5 Agnetha 70998 4.1 ; |
1 2 |
proc print data=salary; run; |

1 |
<img class="aligncenter size-full wp-image-943" src="https://www.nicolas-housset.fr/wp-content/uploads/2016/05/positionner-option-encryptkey-pour-chiffrage-aes-sas.jpg" alt="positionner-option-encryptkey-pour-chiffrage-aes-sas" width="382" height="62" /> |
1 2 3 |
proc sql; drop table salary; quit; |
1 2 3 4 |
NOTE: Table WORK.SALARY a été supprimée. NOTE: PROCEDURE SQL used (Total process time): real time 0.01 seconds cpu time 0.00 seconds |