Aller au contenu

Noyau : Kernel

Infrastructure

Partie centrale d'un système d'exploitation, exécutée avec les privilèges maximaux du processeur. Il gère le matériel, la mémoire et les processus, et sert d'intermédiaire obligé entre les applications et la machine : rien ne le contourne, ce qui en fait aussi la cible la plus rentable du système.

Diagramme de séquence entre quatre acteurs, de gauche à droite : Application, Noyau, Pilote et Matériel. 1, l'application fait un appel système au noyau (lecture, écriture, réseau). 2, le noyau vérifie les droits. Si les droits sont vérifiés : 3, le noyau envoie une commande au pilote pour le périphérique ; 4, le pilote réalise l'opération physique sur le matériel ; 5, le noyau renvoie le résultat à l'application. Sinon, le noyau refuse et renvoie un code d'erreur à l'application.

Espace noyau, espace utilisateur : Le processeur distingue des niveaux de privilège (sur x86, l'anneau 0 pour le noyau, l'anneau 3 pour le reste) : le code noyau accède à tout, les applications tournent dans un espace restreint. Pour lire un fichier ou ouvrir une connexion, une application passe par un appel système : elle demande, elle ne prend pas.

Ce qu'il fait : Ordonnancement des processus, mémoire virtuelle, pilotes de périphériques, systèmes de fichiers, pile réseau : tout ce qui touche au matériel ou au partage des ressources passe par lui. Le noyau Linux compte quelques dizaines de millions de lignes, ce qui donne la mesure de la tâche, et accessoirement celle de la surface d'attaque.

Monolithique ou micronoyau : Linux est monolithique modulaire : pilotes et services tournent en mode privilégié, avec des modules chargeables à chaud. Un micronoyau (seL4, QNX) ne garde que le strict minimum en mode privilégié et repousse le reste en espace utilisateur. Tanenbaum et Torvalds en ont débattu publiquement en 1992 ; le monolithe a emporté les serveurs, le micronoyau les voitures et les équipements où une panne ne se répare pas en redémarrant.

Enjeu de sécurité : Une faille noyau donne le contrôle total de la machine, d'où l'intérêt des mises à jour rapides et de la méfiance envers les modules tiers. Un pilote chargé dans le noyau hérite de tous ses droits, y compris celui de faire tomber la machine entière un lundi matin, avec une signature numérique parfaitement valide.

Ce qui arrive si on s'en passe

Sans noyau pour arbitrer l'accès à la machine, chaque programme s'exécute avec les privilèges maximaux du processeur et parle directement au matériel. Plus aucune séparation de la mémoire : un processus peut lire ou modifier les données d'un autre, y compris des secrets chargés en mémoire, et une simple erreur d'adressage peut écraser le code d'un voisin et faire tomber l'ensemble. Aucun contrôle de droits ne s'applique aux fichiers ni aux périphériques, puisque c'est le noyau qui vérifie chaque appel système ; un code malveillant n'a donc aucune élévation de privilèges à obtenir, il les possède déjà. L'audit et la journalisation, qui reposent sur ce passage obligé, perdent leur point d'observation : ce qu'un programme fait sur la machine n'est plus enregistré par une autorité qu'il ne contrôle pas.

Explication de la marmotte

Ton ordinateur fait tourner plein de programmes en même temps : un navigateur, un jeu, de la musique. Le noyau, c'est le chef de cuisine caché qui organise tout ça. Les programmes n'ont pas le droit de toucher directement aux fourneaux, c'est-à-dire à l'écran, au disque ou à la mémoire. Ils passent commande au chef, qui décide qui cuisine quand, partage la place et refuse les demandes dangereuses. Si un programme plante, le chef le met dehors et le reste continue. Mais si le chef lui-même se trompe, toute la cuisine s'arrête : c'est l'écran bleu ou la machine figée.

Où ce terme est utilisé

← Tout le glossaire