Généralités Schémas Pratiques
courantes
Sauvegarde
et restauration
Techniques
avancées
Les agents de
récupération
En cas de
problème

Introduction

Le chiffrement intégré des fichiers ("EFS" = Encrypting File System) est une fonctionnalité du système de fichiers NTFS apparue avec la version 3.0, elle-même née avec Windows 2000.

Pour rappel, les versions de NTFS sont les suivantes :
Version
de NTFS
Version de
WINDOWS
Disponibilité
de EFS
2.0 Windows NT4
3.0 Windows 2000
3.1 Windows XP HOME
Windows XP PRO
Windows 2003

Sous Windows XP Édition Familiale (HOME),
EFS n'est pas disponible

EFS permet de chiffrer n'importe quel fichier ou dossier appartenant à une partition NTFS.
Seul l'utilisateur qui a demandé le chiffrement peut accéder au contenu de ce fichier ou dossier
(et éventuellement des utilisateurs désignés expressément).

Abréviations utilisées (acronymes)

Le chiffrement intégré des fichiers fait fréquemment appel à des acronymes (pour la plupart en anglais). 
Voici la liste de ceux utilisés dans la présente étude :

Acronyme Signification Traduction/Commentaire
AES Advanced Encryption Standard Standard de chiffrement avancé (algorithme à clef symétrique)
Conçu en 2000 par Joan Daemen et Vincent Rijmen ("Rijndael")
API Application programming interface Interface de programmation d'application
(collections de fonctions mises à disposition des développeurs)
CSP Cryptographic Service Provider Service Windows de chiffrement
DES Data Encryption Standard Standard de chiffrement de données (algorithme à clef symétrique)
Conçu en 1977 par IBM
DESX Data Encryption Standard XORed Variante du précédent
DDF Data Decryption Field Champ de déchiffrement de données 
DRA Data Recovery Agent Agent de récupération de données
DRF Data Recovery Field Champ de récupération de données 
EFS Encrypting File System Système de chiffrement de fichiers
FEK File Encryption Key Clef de chiffrement de fichier
FIPS Federal Information Processing Standard Standards émis par le National Institute of Standards and Technology
(NIST) pour les systèmes informatiques de l'administration des USA
HMAC Hash-Based Message Authentication Code Mécanisme d'authentification de messages utilisant des fonctions de hachage
(RFC 2104)
MD5 Message Digest Algorithm 5
 
Algorithme de hachage développé par RSA Data Security
Il renvoie une valeur de 128 bits.
NTFS New Technology File System Système de fichiers "Nouvelle technologie"
Apparu avec Windows NT 3.1 (1993)
RSA Rivest Shamir Adleman Algorithme de chiffrement à clefs asymétriques
Conçu par Rivest, Shamir et Adleman
SHA-1 Secure Hash Algorithm Algorithme de hachage publié par le gouvernement US.
L'un des plus utilisé avec MD5. Il renvoie une valeur de 160 bits.
SID Security IDentifier Identificateur numérique (128 bits) de compte utilisateur sous Windows

 

Avertissement

Comme cela vient d'être précisé précédemment, EFS concerne Windows 2000, Windows XP et Windows 2003.

Les captures d'écran présentent dans cette étude ont été réalisées essentiellement sous Windows XP
(quelques-unes l'ont été sous Windows 2000 Professionnel).

Cependant, sauf mention expresse, tout ce qui est décrit s'applique indifféremment à Windows 2000, XP ou 2003
 

Les seules différences concernent :

 

Rappels sur les algorithmes de chiffrement

Algorithmes à clef symétrique

C'est la même clef qui sert à chiffrer puis à déchiffrer le message

Exemple (très basique!) :

Soit un nombre, par exemple 17,
et un algorithme de chiffrement (très simple) consistant à multiplier ce nombre par le code ASCII de chaque lettre du message
Ainsi "HOMER" va être chiffré en :
   1224-1343-1309-1173-1394

Ce message chiffré est envoyé à un correspondant, lequel va utiliser la même clef ("17") pour déchiffrer le message, en divisant chaque paquet de chiffres par 17, puis en déterminant le caractère ayant ce code.
1224 / 17 = 72 (code de "H")
1343 / 17 = 79 (code de "O")
1309 / 17 = 77 (code de "M")
1173 / 17 = 69 (code de "E")
1394 / 17 = 82 (code de "R")

Il existe évidemment des algorithmes beaucoup plus complexes que cette simple multiplication, et qui portent non pas sur chaque caractère pris un par un, mais sur un "paquet" de caractères.

L'algorithme le plus connu dans ce domaine est "DES" (Data Encryption Standard - ANSI Standard X3.92-1981).

DES a été conçu au départ par IBM en 1977.

Il utilise des clefs de 56 bits (+ 8 bits de parité).

Les données sont découpées en paquets de 64 bits.
A partir de la clef initiale K on fabrique 16 sous-clefs Ki de 48 bits.

Ensuite, pour chaque bloc "x" de 64 bits du texte initial on calcule une permutation y=P(x), mise sous la forme G0 D0 (32 bits gauche et 32 bits droits)

On applique 16 fois de suite la même fonction ainsi définie :

pour i= 1 à 16 :
Gi = Di-1
Di = Gi-1 XOR f(Di-1,Ki)
où "f" est une fonction de confusion (substitutions et permutations)

On applique enfin à G16 D16 l'inverse de la permutation initiale.

L'algorithme dérivé 3DES consiste à appliquer 3 fois de suite DES
(avec des clefs différentes à chaque fois, ce qui donne une clef globale de 168 bits)

Le principal problème dans cette méthode est qu'il faut transmettre au préalable la clef au correspondant.
Son intérêt est la rapidité et simplicité.

Algorithmes à clefs asymétriques

Cette méthode est appelée également chiffrement à "clef publique et clef privée".
On génère une paire de clefs (suivant un algorithme plus ou moins complexe), l'une servant à chiffrer, l'autre à déchiffrer.
L'une des clefs est gardée secrètement (clef privée), l'autre est diffusée à tout le monde (clef publique).

Dans le cas d'un message envoyé par une personne à une autre, l'expéditeur chiffre le message avec la clef publique du destinataire.
Cette clef est connue de tout le monde.
Le destinataire déchiffre le message avec sa clef privée, qu'il est seul à détenir.
D'où le nom de "chiffrement asymétrique"

L'algorithme le plus connu de cette génération de clefs s'appelle RSA, du nom de ses concepteurs : RIVEST, SHAMIR et ADLEMAN

Principe :

  1. On choisit (secrètement) 2 nombres premiers p et q suffisamment grands.
     
  2. On calcule le produit n=p.q
    Ce nombre n constitue la 1ère partie de la clef publique.
     
  3. On choisit un nombre e qui soit premier avec (p-1)(q-1)
    Ce nombre e (encryption) constitue la 2ème partie de la clef publique
     
  4. On détermine ensuite un nombre d tel que e.d mod (p-1)(q-1) = 1
    (NB: mod désigne l'opérateur "modulo")
    Ce nombre d (decryption) constitue la clef privée

Mise en oeuvre :

m message en clair
x message chiffré
n 1ère partie clef publique
e 2ème partie clef publique
d clef privée

Chiffrement : x = m^e mod n
Déchiffrement : m = x^d mod n

Si les nombres premiers initiaux p et q ont été choisis suffisamment grands, il est quasiment impossible, à partir de n et e, de calculer d (à moins de disposer de moyens de calculs considérables)

Exemple :

p = 7 -> n = p.q
n = 119
q= 17 (p-1).(q-1) = 96

on choisit (car il y a plusieurs possibilités) :
e =  5 (premier avec 96)
d = 77 (5x77 = 4x96 +1)

On en déduit les clefs :
clef publique (119 & 5)
clef privée 77

Si on prend la lettre H de l'exemple initial, (code 72), elle va être chiffrée ainsi :
   72^5 = 1934917632
   72^5 mod 119 = 4

Pour retrouver sa valeur :
   4^77 = 2,2835963083295358096932575511192e+46
   4^77 mod 119 = 72
 
C'est évidemment un exemple d'école, car on a pris ici des nombres premiers p et q initiaux très petits (7 et 17)
Donc à partir du couple (119,5), il ne faudrait pas longtemps pour retrouver 77

Par contre, si on prend deux nombres premiers très grands, la décomposition du nombre n sera très longue à opérer,
de même que la détermination de d

Utilisation des algorithmes à clefs asymétriques

Envoi de message chiffré et certifié de A vers B.
La certification, utilisée en plus du chiffrement, permet de garantir la provenance du message chiffré.

  1. A chiffre le message avec la clef publique PubB de B
     
  2. A chiffre le résultat avec sa clef privée PrivA
     
  3. B déchiffre le message chiffré avec la clef publique PubA de A
     
  4. B déchiffre le précédent résultat avec sa clef privée PrivB
     
  5. Si B peut lire le message en clair, cela prouve :

Pour que A et B puissent échanger des informations chiffrées et soient capables de les déchiffrer, il faut et il suffit :

Utilisation conjointe des 2 algorithmes

Le système à clefs asymétriques est évidemment beaucoup plus lourd et plus lent que celui à clefs symétriques.
Le problème du chiffrement symétrique est la communication de la clef unique.

On résout ce dilemme en utilisant conjointement les deux algorithmes de la façon suivante :

  1. Création par A et par B d'un couple de clefs asymétriques,
    avec échanges réciproques des clefs publiques.
     
  2. Création par A d'une clef symétrique
     
  3. Chiffrement par A de la clef symétrique à l'aide de :
  4. Envoi de la clef symétrique chiffrée à B
     
  5. Déchiffrement par B de la clef symétrique chiffrée à l'aide de :
  6. Dès cet instant, A et B sont en possession de la même clef symétrique,
    sans qu'elle ait circulé en clair.
     
  7. Échange de messages entre A et B chiffrés avec la clef symétrique.

Sécurité du chiffrement EFS

Ce système est très sûr et très fonctionnel  :

Mécanisme du chiffrement EFS

Principes

EFS fait appel à un double mécanisme de chiffrement :

Cette mixité a pour but d'améliorer les performances.
En effet, si on utilisait l'algorithme asymétrique pour chiffrer l'intégralité des données, le temps nécessaire serait prohibitif avec de gros fichiers.
L'algorithme symétrique est environ mille fois plus rapide, ce qui le rend plus adapté avec un volume important de données.
Mais comme il est plus vulnérable (même clef servant aux chiffrement et déchiffrement), on chiffre cette clef avec un algorithme asymétrique.

Déroulement du processus