> Tech > Structure des ruches

Structure des ruches

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Le Gestionnaire de configurations divise une ruche en unités d'allocation logiques baptisées blocs, tout comme un système de fichiers divise un disque en groupes. Par définition la taille des blocs du Registre est de 4 096 octets (4 Ko). Lorsque de nouvelles données alimentent une ruche, celle-ci s'étend toujours par

Structure des ruches

incréments de blocs.
Le premier bloc d’une ruche est le bloc de base. Il contient des informations
globales sur la ruche, y compris une signature – regf – qui identifie le
fichier comme étant une ruche, des numéros de séquence mis à  jour, un horodatage
indiquant le dernier démarrage d’une opération d’écriture dans la ruche, le numéro
de version du format de la ruche, une somme de contrôle et le nom complet du fichier
de la ruche (par exemple SystemRoot\CONFIG\SAM).
Nous détaillerons la signification des numéros de séquence mis à  jour et l’horodatage,
lorsque nous étudierons comment les données s’écrivent dans un fichier ruche.
Le numéro de version du format des données spécifie le format des données à  l’intérieur
de la ruche. Les formats de ruches ont changé de NT 3.51 à  NT 4.0, il est donc
inutile d’essayer de charger une ruche NT 4.0 dans de précédentes versions de
NT.

Windows NT range les données de Registre stockées par une ruche dans des
conteneurs baptisés cellules

Windows NT range les données de Registre stockées par une ruche dans des
conteneurs baptisés cellules. Une cellule peut contenir une clé, une valeur,
un descripteur de sécurité, une liste de sous-clés ou une liste de valeurs de
clés. Une zone au début des données d’une cellule décrit le type de données. Le
tableau 3 détaille chaque type de données d’une cellule. L’en-tête d’une cellule
est une zone spécifiant la taille de la cellule.
Lorsqu’une cellule rejoint une ruche et que celle-ci doit s’agrandir pour contenir
la cellule, le système crée une unité d’allocation baptisée bin. Un bin
est la taille de la nouvelle cellule arrondie au bloc supérieur. Le système considère
tout espace entre la fin de la cellule et celle de l’espace libre, comme un bin
qu’il peut allouer à  d’autres cellules. Les bins ont aussi des en-têtes qui contiennent
une signature, hbin, et une zone qui enregistre le déplacement dans le
fichier ruche du bin et la taille du bin.

En utilisant des bins, et non des cellules, pour faire le suivi des composants
actifs du registre, Windows NT minimise certaines opérations d’administration.
Par exemple le système affecte et désaffecte généralement les bins moins souvent
que les cellules, ce qui permet au Gestionnaire de configurations de gérer plus
efficacement la mémoire. Lorsqu’il lit une ruche du Registre en mémoire, le Gestionnaire
de configurations peut choisir de ne lire que les bins qui contiennent des cellules
(c’est-à -dire les bins actifs) et ignorer les bins vides.
Au fur et à  mesure que le système ajoute et supprime des cellules dans une ruche,
celle-ci peut contenir des bins vides intercalés avec des bins actifs
. Cette situation ressemble à  la fragmentation des disques qui se produit quand
le système crée et supprime des fichiers sur le disque. Lorsqu’un bin est vide,
le Gestionnaire de configurations le regroupe avec tous les bins vides adjacents
pour former le bin vide contigu le plus grand possible. Le Gestionnaire de configurations
rassemble également les cellules supprimées adjacentes pour former des cellules
libres plus grandes.

Les liens qui créent la structure d’une ruche sont les index de cellules.
Un index de cellule signale le déplacement d’une cellule dans le fichier ruche.
C’est donc une sorte de pointeur désignant une autre cellule que le Gestionnaire
de configurations interprète en fonction du démarrage d’une ruche. Par exemple
une cellule décrivant une clé contient une zone spécifiant l’index de cellule
de sa clé parente ; un index de cellule de sous-clé spécifie la cellule décrivant
les sous-clés qui lui sont subordonnées. La liste des index de cellules est stockée
dans une cellule de liste de sous-clés, renvoyant aux cellules de clés des sous-clés.

La distinction entre cellules, bins et blocs peut prêter à  confusion. Je vais
donc vous donner un exemple d’agencement de ruche de Registre simple. L’exemple
de fichier ruche de Registre illustré sur la figure 1 contient un bloc de base
et deux bins. Le premier bin est vide et le second contient plusieurs cellules.
Logiquement, la ruche ne possède que deux clés : la clé racine Root et
une sous-clé de Racine, Sub Key.
La clé racine a deux valeurs, Val 1 et Val 2. Une cellule de liste
de sous-clés localise la sous-clé de la clé racine et une cellule de liste de
valeurs localise les valeurs de la clé racine. Les espaces libres du second bin
sont des cellules vides. La figure ne montre pas les cellules de sécurité des
deux clés, qui seraient présentes dans une ruche.

L’écran 1 montre un écran de l’utilitaire Diskprobe du Kit de ressources de Windows
NT Server 4.0 examinant le premier bin d’une ruche SYSTEM. Notez la signature
du bin, hbin, en haut à  droite de l’image. Regardez, sous la signature
du bin, la signature nk. C’est la signature d’une cellule de clé. La cellule
est la cellule racine de la ruche SYSTEM, que désigne le nom suivant la signature
nk – System.

Pour optimiser les recherches à  la fois des valeurs et des sous-clés, le Gestionnaire
de configurations trie par ordre alphabétique les cellules de listes de sous-clés
et celles de listes de valeurs. Il peut alors effectuer une recherche binaire
pour trouver une sous-clé dans une liste de sous-clés.
Le Gestionnaire de configurations examine la sous-clé du milieu de la liste et
si le nom de celle qu’il cherche se trouve, alphabétiquement, avant celui de la
sous-clé du milieu, il sait que la sous-clé se trouve dans la première moitié
de la liste ; sinon, elle se trouve dans la deuxième moitié. Ce processus de dichotomie
se poursuit jusqu’à  ce que le Gestionnaire de configurations localise la sous-clé
ou ne trouve pas de correspondance.

Le Gestionnaire de configurations n’accède pas à  l’image d’une ruche sur
le disque à  chaque accès au Registre

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010