Home header
Linux temps réel embarqué et outils de développements Technique





Notre distribution Ocera Sécurisée permet de certifier un système embarqué.
Elle repose sur des modifications sensibles de GRUB, du noyau Linux et des utilitaires de gestion des modules.

Certifier une application

Certifier une application c'est assurer que celle-ci correspond bien à ce qu'elle prétend être. C'est à dire authentifier sa provenance et garantir son intégrité.

Ceci est particulièrement important dans le cadre de l'utilisation de logiciels Open Source lorsque le fournisseur garanti le fonctionnement d'une application tout en fournissant les sources de cette application à l'utilisateur.

Ceci est tout aussi important lorsqu'une tierce partie développe une bibliothèque ou un driver pour un système d'exploitation:

La question se pose pour le fournisseur lors de la maintenance ou des garanties qu'il doit fournir au client.

La chaîne de confiance d'un système d'exploitation

Pour qu'une application puisse s'exécuter dans un ordinateur ou un système embarqué, il a fallu que plusieurs programmes préparent son exécution et lui propose un environnement d'exécution adapté.

En général cela comprends:

  • Un code ROM d'initialisation du matériel souvent appelé BIOS capable de charger un boot-loader primaire depuis une mémoire de masse (FLASH ou disque dur)
  • Un boot-loader primaire capable de gérer les particularité de la mémoire de masse depuis laquelle il chargera le...
  • boot-loader secondaire capable de gérer un système de fichier plus évolué capable de charger le...
  • système d'exploitation qui proposera aux programmes...
  • des bibliothèques constituant une interface de programmation pour des accès standardisés au services du système d'exploitation et aux périphériques qui seront pilotés au moyen de...
  • drivers gérant les particularités matérielles de ces périphériques.

Ainsi lorsque nous certifions une application nous certifions toute la chaîne de code qui peut être modifié. L'illustration ci-dessous représente la chaîne de confiance partant du code ROM, supposé ici inaltérable pour certifier le boot-loader, qui lui même certifie le système d'exploitation qui certifie à son tour l'application.

La certification des drivers et des librairies sont des cas spécifiques de la certification des applications.

La solution proposée par MNIS dans S.Ocera (Secured Ocera)

Notre solution repose sur des modifications apportées au boot loader, au système d'exploitation, et aux utilitaires de gestion de chargement dynamique des drivers ou des modules.

La modification du code ROM est assez triviale à effectuer, elle consiste à effectuer un test d'intégrité du boot loader primaire au moyen d'un HASH.

Le boot Loader

Le boot loader, dans notre cas GRUB, est modifié pour y ajouter une clefs publique et les routines de vérification de signature, SHA1, RSA.

La clefs publique servira à vérifier la signature du noyau au moyen des routines de vérification.

Le noyau

Le noyau doit être modifié pour contenir la signature qui sera vérifiée par le boot-loader et pour y ajouter le code de vérification des exécutables.

Le code de vérification des exécutables est déjà en partie contenu dans le noyau 2.6 et nous utilisons les HOOK de sécurité de Linux pour implémenter les vérifications.

Les drivers et autres modules dynamiques

Les drivers et les modules dynamiquement chargeables doivent être certifier par le noyau. Nous avons modifié l'utilitaire de chargement du noyau insmod pour y ajouter un code de vérification des modules.

Ce code vérifie que les modules ont été correctement signés à l'aide de l'utilitaire o_mod_sign.

Le programme insmod est bien sur lui même signé et vérifié par le noyau lors de l'exécution.

Les applications et les librairies

Les applications sont signées au moyen de l'utilitaire o_sign et sont vérifiées par le noyau lors du chargement ainsi que toutes les librairies dynamiques associées.

La PKI associée

Nous utilisons les outils de OpenSSL pour construire la PKI associée et les outils spécifiques pour signer les exécutables ELF.

  • o_mod_sign: utilitaire de signature des modules dynamiquement chargeables.
  • o_sign: utilitaire de signature des exécutables ELF, du noyau et des librairies

Voir aussi sur le sujet

Autres solutions proposées pour garantir l'authenticité du noyau ou des applications:

Perseus http://www.perseus-os.org/
Digsig http://disec.sourceforge.net/
tGrub http://www.prosec.rub.de/trusted_grub.html
Enforcer http://enforcer.sourceforge.net/
Sekuro http://krypt.cs.uni-sb.de/projects/sekero/


©M.N.I.S Société | Produits | Services | Formations | Support | Partenariat | Presse | Téléchargements ©M.N.I.S