> For the complete documentation index, see [llms.txt](https://sansong.gitbook.io/cyber/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sansong.gitbook.io/cyber/os/windows.md).

# Windows

Contrôle d'accès sous Windows

#### 1. Les identifiants de sécurité (SID)

Chaque entité (utilisateur, groupe, ordinateur) possède un **SID** (Security Identifier), un identifiant unique et immuable, du type `S-1-5-21-...`. Contrairement au nom d'utilisateur, le SID ne change jamais, même si on renomme le compte. C'est ce SID qui sert de référence partout dans le système.

#### 2. Le jeton d'accès (Access Token)

Quand un utilisateur se connecte, Windows lui attribue un **jeton d'accès** (access token). Ce jeton contient :

* le SID de l'utilisateur,
* les SID de tous les groupes dont il est membre,
* ses privilèges (droits spéciaux comme "arrêter le système", "déboguer des programmes", etc.),
* son niveau d'intégrité (depuis Windows Vista, voir plus bas).

Chaque processus lancé par l'utilisateur hérite d'une copie de ce jeton. C'est cette copie qui est présentée à chaque tentative d'accès à une ressource.

#### 3. Les descripteurs de sécurité et les ACL

Chaque objet sécurisable (fichier, dossier, clé de registre, imprimante, service...) possède un **descripteur de sécurité** (Security Descriptor) qui contient notamment :

* **DACL** (Discretionary Access Control List) : la liste qui définit qui a le droit de faire quoi (lecture, écriture, exécution...). C'est la partie "classique" des permissions.
* **SACL** (System Access Control List) : définit ce qui doit être audité (journalisé) — par exemple "logger chaque tentative d'écriture ratée sur ce fichier".
* Le **propriétaire** de l'objet (owner), qui a toujours le droit de modifier les permissions.

Une DACL est composée d'entrées appelées **ACE** (Access Control Entries), chacune associant un SID à une autorisation (Allow ou Deny).

#### 4. Le contrôle d'intégrité (Mandatory Integrity Control)

Depuis Vista/Windows 7, il existe une couche supplémentaire : les **niveaux d'intégrité** (Low, Medium, High, System). Un processus avec un niveau d'intégrité faible ne peut pas modifier des objets à niveau d'intégrité plus élevé, même si les ACL classiques l'autoriseraient.

#### 5. UAC (User Account Control)

Même un administrateur ne dispose pas en permanence de tous ses privilèges : à la connexion, il reçoit deux jetons (un filtré, standard, et un complet, administrateur). Les applications tournent avec le jeton filtré par défaut, et il faut une élévation explicite (la fameuse fenêtre UAC "*Exécuter ce programme en tant qu'administrateur*") pour utiliser le jeton complet.

#### 6. Le processus de vérification (Access Check)

Quand un processus essaie d'accéder à une ressource :

* **Intégrité** : le niveau du processus ≥ niveau de l'objet ? Sinon refus direct.
* **DACL explicite — Deny** : un refus explicite qui vise l'appelant ?
* **DACL explicite — Allow** : une autorisation explicite ?
* **DACL héritée — Deny**
* **DACL héritée — Allow**
* Rien trouvé → refus par défaut
