Le mot anglaisfirmware est issu defirm (« résistant » ou « ferme », en anglais) et desoftware (logiciel, programme informatique).Firm est un état intermédiaire entresoft (« doux ») ethard (« dur »), en référence aux termessoftware (logiciel) ethardware (matériel informatique). Le premierfirmware était unmicrocode et l'usage a étendu le terme à toute forme de logiciel de base, stocké dans unemémoire morte et résistant aux coupures d'alimentation en électricité.
Lefirmware permet à unmatériel informatique d’évoluer (via desmises à jour) et/ou d'intégrer de nouvelles fonctionnalités, sans avoir besoin de revoir complètement la conception duhardware.
Lamémoire dans laquelle réside lefirmware peut être de deux types :
non volatile, stockant le programme et les données même lorsqu'elle n'est pas alimentée en électricité. C'est le cas le plus courant, avec desROM, desEPROM ou unemémoire flash ;
volatile, donc incapable de conserver le programme ou les données lorsqu'elle n'est plus alimentée en électricité. Dans ce cas, lefirmware doit être chargé par unpilote à la mise sous tension[3].
Dans la plupart des cas, ce logiciel gère le fonctionnement interne du systèmeélectronique.
D'une manière générale, lefirmware cumule les avantages du logiciel, qu'il est possible de modifier, et du matériel, plus efficace. De son côté, lefirmware interagit avec des composants matériels qui ne peuvent plus être modifiés une fois fabriqués, ce qui réduit la nécessité de le mettre à jour.
On peut noter que :
lefirmware des ordinateurs (BIOS ouEFI) est exécuté par son (ou ses)CPU interne (exemples : code de gestion de la carte mère, d'unecarte vidéo ouSCSI) ;
lefirmware interne à chaque périphérique est exécuté par le matériel que celui-ci contient (exemples :lecteur DVD, IDE ou SCSI, employant des micro-contrôleurs ou circuits de diverses familles).
Cependant, les deux cas précédents sont parfois réunis, par exemple, lorsque la ROM d'un périphérique contient une partie du BIOS de l'ordinateur ainsi que lefirmware destiné à la gestion de ce périphérique. Accessoirement, cela permet de mesurer le degré d'indépendance d'un périphérique vis-à-vis du type de machine hôte car toute extension munie d'un BIOS pour PC n'est utilisable que sur une machine de ce type alors que celles qui n'emploient qu'unfirmware sont indépendantes de la machine hôte. C'est par exemple le cas des lecteurs/graveurs CD/DVD IDE, lesquels sont conformes à la normeATAPI et fonctionnent donc sur toute machine IDE (PC, Mac…).
Plusieurs architectures sont connues en fonction du champ d’application dufirmware, en partant desordinateurs ou des équipements de grande utilité, mais aussi en fonction du type defirmware. Les différentes architectures defirmwares sont basées sur des busentrées-sorties. Il est donc opportun de préciser qu’il n’existe pas d’architecture standard ni de modèle figé d’architecture desfirmwares.
Lesfirmwares, comme l’ensemble des systèmes à mémoire, se caractérisent généralement par la taille de la mémoire qui induit le temps de flashage, le flux de transfert et la méthode de mise à jour. Lesfirmwares peuvent être classés en deux grandes familles : le type « binaire », compressé ou non, et le typearchive[4].
Dans les systèmes embarqués, lefirmware est généralement organisé comme représenté sur la figure ci-contre. Au cours du processus de démarrage, lechargeur d'amorçage (bootloader en anglais), est maintenu. Il peut être amorcé en premier lieu lorsque le système est sous tension. Le noyau de l'OS suit de près.
Lebootloader initialise le matériel nécessaire et prépare les environnements logiciels de fonctionnement. Dans les détails, il divise le processus de chargement en deux parties. L’étape 1 est étroitement liée au matériel.
Ensuite, l'étape 2 est chargée et démarrée. Cette étape permet de lancer les fonctions plus sophistiquées. Lebootloader initialise les différents besoins pour le matériel (ports, les entrées et les sorties). Il va ensuite charger et démarrer le noyau du système chargé de la gestion des ressources du système, tels que les différents processus, la gestion de la mémoire. Ainsi, le système est démarré et les programmes d'application peuvent fonctionner sur la base des valeurs d'initialisation.
L'utilisateur final n'a, d'ordinaire, pas accès directement aufirmware mais peut parfois le modifier par l'installation demises à jour pour profiter d'améliorations ou de corrections debug. Pour cela il faut que lefirmware réside dans certains types de mémoires ROM « reprogrammables », le plus souvent il s'agit d'EEPROM ou, depuis le milieu des années 1990, demémoire flash (c'est-à-dire des EEPROM rapides).
Lesfirmwares sont susceptibles d'être la cible d'actions malveillantes visant à rendre l'appareil inopérant ou à l'utiliser afin de s'introduire dans un réseau. Durant l'EUsecWest 2008,Rich Smith a mis en avant la possibilité de lancer uneAttaque par déni de service permanent[6] via une faille de sécurité sur les systèmes de mises à jour desfirmwares des équipements faibles.
Si une telle faille peut être exploitée afin de déployer une attaque par déni de service permanente, il est alors envisageable d'exploiter cette faille pour introduire unebackdoor et s'introduire dans le système d'information[7]. Ce sont souvent des équipements constamment en fonctionnement qui sont la cible de telles attaques.
LesfirmwaresEFI (de l'anglaisExtensible Firmware Interface) sont amenés à remplacer lesBIOS sur lescartes mères desPC en raison de leur prise en charge du démarrage sécurisé, de disques de plus grande capacité, et de leur simplicité de programmation que le BIOS n'a pas[8]. Son inconvénient est l'ajout d'une couche supplémentaire entre le hardware et l'utilisateur, compensée par une plus grande rapidité des processeurs et des mémoires.