Aller au contenu principal

3.2. Environnements d'attestation en couches

3.2. Environnements d'attestation en couches

Par définition, le rôle d'Attester génère des Evidence. Un Attester peut être composé d'un ou plusieurs environnements imbriqués (couches). La couche inférieure d'un Attester possède un Attesting Environment généralement conçu pour être immuable ou difficile à modifier par du code malveillant. Afin d'évaluer les Evidence générées par un Attester, le Verifier doit faire confiance à diverses couches, y compris l'Attesting Environment inférieur. La confiance dans les couches de l'Attester, y compris la couche inférieure, peut être établie de diverses manières, comme discuté dans la section 7.4.

Dans l'attestation en couches, les Claims peuvent être collectées à partir de ou sur chaque couche en commençant par une couche initiale. Les Claims correspondantes peuvent être structurées de manière imbriquée qui reflète l'imbrication des couches de l'Attester. Normalement, les Claims ne sont pas auto-affirmées. Au contraire, une couche précédente agit comme l'Attesting Environment pour la couche suivante. Les Claims concernant une couche initiale sont généralement affirmées par un Endorser.

L'exemple de dispositif illustré dans la figure 3 comprend (A) un BIOS stocké en mémoire morte, (B) un chargeur de démarrage et (C) un noyau de système d'exploitation.

          .-------------.   Endorsement for ROM
| Endorser +-----------------------.
'-------------' |
v
.-------------. Reference .----------.
| Reference | Values for | |
| Value +----------------->| Verifier |
| Provider(s) | ROM, bootloader, | |
'-------------' and kernel '----------'
^
.------------------------------------. |
| | |
| .---------------------------. | |
| | Kernel(C) | | |
| | | | | Layered
| | Target | | | Evidence
| | Environment | | | for
| '---------------+-----------' | | bootloader
| Collect | | | and
| Claims | | | kernel
| .---------------|-----------. | |
| | Bootloader(B) v | | |
| | .-----------. | | |
| | Target | Attesting | | | |
| | Environment |Environment+-----------'
| | | | | |
| | '-----------' | |
| | ^ | |
| '--------------+--|---------' |
| Collect | | Evidence for |
| Claims v | bootloader |
| .-----------------+---------. |
| | ROM(A) | |
| | | |
| | Attesting | |
| | Environment | |
| '---------------------------' |
| |
'------------------------------------'

Figure 3: Attester en couches

Le premier Attesting Environment (la ROM dans cet exemple) doit garantir l'intégrité du chargeur de démarrage (le premier Target Environment). Il existe potentiellement plusieurs noyaux à démarrer ; la décision revient au chargeur de démarrage. Seul un chargeur de démarrage avec une intégrité intacte prendra une décision appropriée. Par conséquent, les Claims relatives à l'intégrité du chargeur de démarrage doivent être mesurées en toute sécurité. À ce stade du cycle de démarrage du dispositif, les Claims collectées ne peuvent généralement pas être composées en Evidence.

Après le début de la séquence de démarrage, le BIOS effectue la caractéristique la plus importante et la plus définissante de l'attestation en couches : le chargeur de démarrage mesuré avec succès devient (ou contient) un Attesting Environment pour la couche suivante. Cette procédure dans l'attestation en couches est parfois appelée « mise en scène ». Il est important que le chargeur de démarrage ne puisse pas modifier les Claims à son sujet qui ont été collectées par le BIOS. Cela peut être assuré en faisant en sorte que ces Claims soient soit signées par le BIOS, soit stockées de manière inviolable par le BIOS.

En continuant avec cet exemple, l'Attesting Environment du chargeur de démarrage est maintenant en charge de collecter les Claims sur le Target Environment suivant. Dans cet exemple, c'est le noyau à démarrer. L'Evidence finale contient donc deux ensembles de Claims : un ensemble sur le chargeur de démarrage tel que mesuré et signé par le BIOS et un autre ensemble de Claims sur le noyau tel que mesuré et signé par le chargeur de démarrage.

Cet exemple pourrait être étendu davantage en faisant du noyau un autre Attesting Environment pour une application en tant qu'autre Target Environment. Cela entraînerait un troisième ensemble de Claims dans l'Evidence concernant cette application.

L'essence de cet exemple est une cascade d'environnements en étapes. Chaque environnement a la responsabilité de mesurer l'environnement suivant avant que l'environnement suivant ne soit démarré. En général, le nombre de couches peut varier selon le dispositif ou l'implémentation, et un Attesting Environment peut même avoir plusieurs Target Environments qu'il mesure, plutôt qu'un seul comme montré par exemple dans la figure 3.