-
Notifications
You must be signed in to change notification settings - Fork 7
Appraisal using a Singleton Verifier
This example shows Evidence on the left and a first CoRIM as input to stage 1 verifier.
The Stage 1 output is the next rectangle from the left. It becomes the input to the second stage along with a second CoRIM.
The Stage 2 output becomes the input to Stage 3 along with an Appraisal Policy, which produces the Stage 3 output.
The Verifier could add claims that it makes as Attestation Results. For example, the Verifier could add an AR4SI assertion to Stage 3 output (accepted claims). Note: the diagram seems to suggest
Diagrams follow these coloring and formatting conventions.
It may be helpful to read the claims sets according to the Abadi calculus.
There are three example use cases that are helpful to understand how Verifier may group sets of claims. A group context determines the set of claims that are evaluated together when determining if there is a match. It is possible for one group of claims to "match" while a different group doesn't.
Slide 5: https://drive.google.com/file/d/1ReOO2FIcuZkk7kqAdkSiGdomNMYkvmNM/view?usp=share_link
-
Use rim-locator to find OEM, MB, and NIC RIMS
-
Use CoBOM to discard all tags besides Chassis, Board, and Card
-
Use Domain membership to create Chassis domain (F00) and to include motherboard domain (C00) into working model.
-
Use Domain membership to include Card domain (E00) and board subdomains (C10, C20).
-
Use Domain membership to include refv 300 and 301 in subdomains C10, C20 respectively.
-
Use Domain dependency to record that C20 depends on C10
-
Use Domain membership to include Card subdomains (E10, E20)
-
Use Domain dependency to record that E20 depends on E10
-
Collect Evidence from Board Attester.
- Select Cert L0 evidence
- Find domain containing
class-id
=300. (since only C10 has 300 search is deterministic) - Compare Evidence (
class-id
=300) to refv (class-id
=300) (if evidence includeddomainid
=C10 then compare membership domains) - Accept evidence
ver
=“1.0” andsvn
=0 in ACCEPTED-CLAIMS (include domain F00, C00, and C10 context) - Select Cert L1 evidence
- Find domain containing
class-id
=301. (since only C20 has 301 search is deterministic) - Compare Evidence (
class-id
=301) to refv (class-id
=301) (if evidence includeddomainid
=C20 then compare membership domains) - Check that there are accepted claims 300 from domain C10, if true, then finalize matching of 301 evidence
- Accept evidence
digest
=9876 in ACCEPTED-CLAIMS (include domain C20 context)
-
Collect Evidence from Card Attester
- Select Cert L0 evidence
- Find domain containing
class-id
=200 andclass-id
=201. - Compare Evidence (
class-id
=200) to refv (class-id
=200) andclass-id
=201 to refv 201 - Accept evidence
ver
=“1.0”,svn
=0,digest
=FEDC, anddigest
=CDEF in ACCEPTED-CLAIMS (include domain E10 context) - Select Cert L1 evidence
- Find domain containing
class-id
=202 - Compare evidence
class-id
=202 to refvclass-id
=202 - Accept evidence
raw
=1F0 in ACCEPTED-CLAIMS (include domain E20)
-
Accept endv
label
=“PC1” into ACCEPTED-CLAIMS -
Exceptions result in ACCEPTED-CLAIMS becoming null. Note: Domain membership includes the domain ID as a member explicitly, but this could be inferred. However, explicit declaration as a class-id allows inclusion of subdomains using membership triple. Consequently, compositional hierarchies can be constructed.
Slide 6: https://drive.google.com/file/d/1A7pZCKxRlmgCSVI73ZQ-W8pxqxAA-xoR/view?usp=share_link The board vendor issues a SW update that produces a second MB RIM with different version number
- Use
rim-locator
to find OEM, MB, and NIC RIMS - Use CoBOM to discard all tags besides Chassis, Board, and Card
- Use Domain membership to create Chassis domain (F00) and to include motherboard domain (C00) into working model.
- Use Domain membership to include Card domain (E00) and board subdomains (C10, C20).
- Use Domain membership to include refv 300 and 301 in subdomains C10, C20 respectively. (Since there are two RIMs for refv 300/301, (
ver
=“1.0”,digest
=9876), and (ver
=“2.0”,digest
=1234) are grouped bytag-id
) - Use Domain dependency to record that C20 depends on C10
- Use Domain membership to include Card subdomains (E10, E20)
- Use Domain dependency to record that E20 depends on E10
- Collect Evidence from Board Attester.
- Select Cert L0 evidence
- Find domain containing
class-id
=300. (since only C10 has 2class-id
=300 entries search results are grouped bytag-id
) - Compare Evidence (
class-id
=300) to refv (class-id
=300) (if evidence includeddomainid
=C10 then compare membership domains) - Accept evidence
ver
=“2.0” andsvn
=0 since both are in secondtag-id
set; Copy measurements to ACCEPTED-CLAIMS (include domain F00, C00, and C10 context) - Select Cert L1 evidence
- Find domain containing
class-id
=301. (since only C20 has 2 entries for 301, group bytag-id
) - Compare Evidence (
class-id
=301) to refv (class-id
=301) withintag-id
grouping (if evidence includeddomainid
=C20 then compare membership domains) - Check that there are accepted claims 300 from domain C10 within
tag-id
grouping and that C20 depends on C10, if true, then finalize matching of 301 evidence - Accept evidence
digest
=1234 since previous in ACCEPTED-CLAIMS (include domain C20 context)
- Collect Evidence from Card Attester
- Select Cert L0 evidence
- Find domain containing
class-id
=200 andclass-id
=201. - Compare Evidence (
class-id
=200) to refv (class-id
=200) andclass-id
=201 to refv 201 - Accept evidence
ver
=“1.0”,svn
=0,digest
=FEDC, anddigest
=CDEF in ACCEPTED-CLAIMS (include domain E10 context) - Select Cert L1 evidence
- Find domain containing
class-id
=202 - Compare evidence
class-id
=202 to refvclass-id
=202 - Check that there are accepted claims 200 and 201 from domain E10 and that E20 depends on E10, if true, then finalize matching of 202 evidence
- Accept evidence
raw
=1F0 in ACCEPTED-CLAIMS (include domain E20)
- Accept endv
label
=“PC1” into ACCEPTED-CLAIMS - Exceptions result in ACCEPTED-CLAIMS becoming null.
Notes: tag-id
is used as a grouping value because there are multiple TAGs that have identical domain and membership configuration. The rational is that each tag instance has contextual information that doesn’t need to be thrown away. If tag context isn't used, there would need to be some other source of context that describes what was updated. For example, a stateful environment (e.g., stateful-environment-record
) that includes version info.
Slide 7: https://drive.google.com/file/d/1KIeGO6WqXB5TjtLqhdvlkdisdyOgZwUl/view?usp=share_link
- Use rim-locator to find OEM, MB, and NIC RIMS
- Use CoBOM to discard all tags besides Chassis, Board, and Card
- Use Domain membership to create Chassis domain (F00) and to include motherboard domain (C00) into working model.
- Use Domain membership to include Card domain (E00) and board subdomains (C10, C20).
- Use Domain membership to include refv 300 and 301 in subdomains C10, C20 respectively.
- Use Domain dependency to record that C20 depends on C10
- Use Domain membership to include Card subdomains (E10, E20)
- Use Domain dependency to record that E20 depends on E10
- Collect Evidence from Board Attester.
- Select Cert L0 evidence
- Find domain containing
class-id
=300. (since only C10 has 300 search is deterministic) - Compare Evidence (
class-id
=300) to refv (class-id
=300) (if evidence includeddomainid
=C10 then compare membership domains) - Accept evidence
ver
=“1.0” andsvn
=0 in ACCEPTED-CLAIMS (include domain F00, C00, and C10 context) - Select Cert L1 evidence
- Find domain containing
class-id
=301. (since only C20 has 301 search is deterministic) - Compare Evidence (
class-id
=301) to refv (class-id
=301) (if evidence includeddomainid
=C20 then compare membership domains) - Check that there are accepted claims 300 from domain C10, if true, and that C20 depends on C10 then finalize matching of 301 evidence
- Accept evidence
digest
=9876 in ACCEPTED-CLAIMS (include domain C20 context)
- Collect Evidence from Card Attester
- Select Cert L0 evidence
- Find domain containing
class-id
=200 andclass-id
=201. - Compare Evidence (
class-id
=200) to refv (class-id
=200) and class-id=201 to refv 201 - Accept evidence
ver
=“1.0”,svn
=0,digest
=FEDC, anddigest
=CDEF in ACCEPTED-CLAIMS (include domain E10 context) - Select Cert L1.a evidence
- Find domain containing
class-id
=202 - Compare evidence class-id=202 to refv
class-id
=202 - Check that there are accepted claims 200 and 201 from domain E10, if true, and that E20 depends on E10 then finalize matching of 202 evidence
- Accept evidence raw=1F0 in ACCEPTED-CLAIMS indexed by
mkey
, e.g., “bus=0,port=0”. (include domain E20) - Select Cert L1.b evidence
- Find domain containing
class-id
=202 - Compare evidence
class-id
=202 to refvclass-id
=202 - Check that there are accepted claims 200 and 201 from domain E10, if true, and that E20 depends on E10 then finalize matching of 202 evidence
- Accept evidence raw=1F0 in ACCEPTED-CLAIMS using
mkey
to disambiguate, e.g., “bus=0,port=1”
- Accept endv
label
=“PC1” into ACCEPTED-CLAIMS - Exceptions result in ACCEPTED-CLAIMS becoming null.
Note: If evidence doesn’t have mkey
support (eg., concise-evidence
) then conveyance mechanism must supply an mkey
equivalent. For example, an SPDM payload could contain bus and port address info. Mkey
might still be useful in ACCEPTED-CLAIMS as a way to capture the bus and port configuration information that distinguishes the NIC instances.
Note: Using concise-evidence
rather than DiceTcbInfo would allow evidence in L1.a and L1.b to both assert domain membership of E20. The same domain dependency check is valid for both, because they are clonal instances.
See: https://drive.google.com/file/d/1uhvv89ZoSxsYd4bbMShZRuHUOlHtCRMN/view?usp=share_link