Anneau de protection

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis Ring (informatique))

Un anneau de protection (ring en anglais) est l’un des niveaux de privilèges imposés par l’architecture d’un processeur.

De nombreuses architectures modernes de processeurs (architectures parmi lesquelles on trouve le populaire Intel x86) incluent une certaine forme de protection en anneau, bien que les logiciels d’exploitation ne l’exploitent pas toujours entièrement.

Les rings étaient parmi les concepts les plus révolutionnaires mis en œuvre par le système d’exploitation Multics, un prédécesseur fortement sécurisé de la famille actuelle des systèmes d’exploitation UNIX.

Description[modifier | modifier le code]

Les anneaux sont arrangés dans une hiérarchie allant du plus privilégié (celui qui est le plus sécurisé, habituellement le numéro zéro dit Ring0 ) au moins privilégié (le moins sécurisé, habituellement l’anneau le plus élevé). Cela signifie donc qu'un processus d'analyse ayant accès uniquement à Ring3 ne pourra pas détecter si un autre logiciel (malveillants par exemple) modifie une donnée ou injecte un autre processus avec un accès plus élevé (Ring2 , Ring1 , Ring0 ) créant ainsi une sorte de guerre de permission avec les logiciels malveillants et les logiciels antivirus par exemple. Le système d’exploitation Multics original possédait huit anneaux, mais beaucoup de systèmes modernes en possèdent moins. Le matériel connaît l’anneau de privilège courant des instructions qui s’exécutent à tout moment, grâce à un registre spécial du processeur : EFLAG. EFLAG est un registre spécifique des processeurs x86 qui permet de fixer et de connaître l’état du processeur à tout moment grâce aux différents bits qui le composent. L’un d’eux, IOPL (I/O Privilege Level) contient un nombre qui indique le niveau de privilège du programme en cours d’exécution.

Le matériel limite sévèrement les manières dont la main peut être passée d’un anneau à l’autre, et impose également des restrictions aux types d’accès mémoire qui peuvent être exécutés au travers des anneaux. En général il y a une instruction spéciale d’appel qui transfère le contrôle d’une manière sécurisée vers des points d’entrée prédéfinis dans des anneaux de plus bas niveau (plus sécurisés) ; ceci fonctionne comme un appel supervisé dans beaucoup de systèmes d’exploitation qui emploient l’architecture en anneau, ces restrictions matérielles étant conçues pour limiter les occasions d’infractions accidentelles ou malveillantes envers la sécurité du système.

L’utilisation efficace de l’architecture en anneau exige une coopération étroite entre le matériel (le processeur) et le système d’exploitation. Ces derniers, la plupart du temps, n’exploitent que deux types d’anneaux de sécurité, le mode utilisateur et le mode noyau.

Le terme « anneau de protection » vient du fait que l’on peut voir les différents modes de privilège comme des cercles concentriques ou le mode le plus privilégié est à l’intérieur et les modes moins privilégiés vont vers l’extérieur.

Les processeurs x86[modifier | modifier le code]

Anneaux de privilèges pour les processeurs x86 disponibles en mode protégé.

Les processeurs de la famille x86 implémentent quatre anneaux de privilèges[1], mais dans la grande majorité des cas, seuls deux sont réellement exploités par les systèmes d’exploitation actuels (tel que Microsoft Windows ou les dérivés d’UNIX).

Ces deux anneaux de protections sont le ring0, l’anneau de protection ayant le plus de privilèges, et qui est l’anneau sous lequel fonctionne le cœur du système d’exploitation ainsi que le ring3 sous lequel fonctionnent les logiciels utilisateurs.

La transition d’un mode à un autre est assurée par l’instruction en langage assembleur SYSENTER.

Notes et références[modifier | modifier le code]