Skip to content

Commit 0221544

Browse files
author
Marcio Silva
committed
Refined the proposal, added the beginnings of a simple API
1 parent 60bdccd commit 0221544

File tree

1 file changed

+24
-14
lines changed

1 file changed

+24
-14
lines changed

73-offline-attestation.md

+24-14
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,9 @@ A good summary is probably at least a paragraph in length.
9797
Provide Keylime with the ability to store all the required information to
9898
perform a full attestation, in a persistent external time-series datastore.
9999
This should also include some proof that a given AIK created on a TPM by an
100-
`agent` was indeed tied to a given EK, a process that is done by the
101-
`registrar` and whose responsibility is to store it on a tamper-resistant
100+
`agent` was indeed tied to a given EK (from the TPM locate at the node where
101+
it was running). This AIK/EK association process is done by the `registrar`
102+
it will its responsibility to store a record of such association on a tamper-resistant
102103
metadatastore (e.g. transparency log)
103104

104105
## Motivation
@@ -111,10 +112,10 @@ this enhancement. Describe why the change is important and the benefits to user
111112
The main motivation for adding this functionality is to give auditors and other
112113
compliance officers the ability to answer, with a proper degree of certainty
113114
and trust the following question: did node N had its software stack fully
114-
attested at date T? Being date "T" a point time that could be well in the
115-
past, we cannot rely on the accessibility (or even the existence) of the given
116-
node. Furthermore we cannot even rely on the accessibility (or even the
117-
existence) of the server-side components of the Keylime cluster (i.e.,
115+
attested at date D? Being date "D" a point time that could be well in the
116+
past, we cannot rely on the accessibility to (or even the existence of) the given
117+
node. Furthermore we cannot even rely on the accessibility to (or even the
118+
existence of) the server-side components of the Keylime cluster (i.e.,
118119
`registrar` and `verifier`) and thus need to design with these boundary
119120
conditions in mind.
120121

@@ -128,6 +129,8 @@ know that this has succeeded?
128129
- Add functionality on the `registrar` to record (in a tamper-resistant
129130
transparency log) the association between the EK and AIK (i.e.
130131
`tpm2_makecredential`)
132+
- Add functionality on the `registrar` to record (in a time-series persistent
133+
datastore) all the information required to check the association of EK and AIK
131134
- Add functionality on the `verifier` to record (in a time-series persistent
132135
datastore) all the information needed to perform attestation standlone (i.e.,
133136
quotes and MB/IMA logs)
@@ -144,8 +147,8 @@ and make progress.
144147

145148
- The interaction between the time-series persistent datastore and
146149
tamper-resistant transparency log will be done by keylime user/operator.
147-
Inside the core Keylime, a "plugin" architecture will be adopted (very much
148-
like the "policies" for Measured Boot) and the implementation details of the
150+
Inside the core Keylime, a "plugin" architecture will be adopted (similar
151+
to the "policies" for Measured Boot) and the implementation details of the
149152
code which will interact with such stores are outside of the scope.
150153

151154

@@ -173,14 +176,17 @@ every time an `agent` is restarted on Keylime.
173176
- The `verifier` will be modified to take the `json_response` (python
174177
dictionary) from the `agent` - which will include both quotes and logs (MB
175178
and IMA) - `agent` data (python dictionary) from the SQL database (internal to
176-
Keylime) and the `agentAttestState` python object, combine it into a single
177-
record and store it on the time-series persistent datastore.
179+
Keylime), combine it into a single record and store it on a time-series datastor.
178180
- Two pieces of information: the name of a python module to be dynamically
179181
imported (which will contain code used to interact with these new proposed
180182
stores) and the connection paramaters (for these new proposed stores) will be
181183
supplied by the user as two new parameters under `[cloud_verifier]` and
182184
`[registrar]` section: `persistent_store_import` and
183185
`persistent_store_connection_data`)
186+
- A new API is proposed with the following operations: bulk_record_retrieval,
187+
record_read, record_create, record_sign, record_check. The `bulk_record_retrieval`
188+
call will be the only one which will interact with different datastores, in a
189+
"plugin" architecture.
184190
- A new CLI interface - `keylime_attest` - will contact both the transparency
185191
log and the time-series datastore, get a list of AIKs proven to be associated
186192
with an EK, and then call the same code used by the `verifier` (i.e.,
@@ -235,12 +241,15 @@ proposal will be implemented, this is the place to discuss them.
235241
- The first PR will provide the "persistent datastore" plugin capability, to be
236242
called from with both `registrar` and `verifier` code. It will include a
237243
default, "null operation" and all the required changes into `config.py` and
238-
`keylime.conf`
244+
`keylime.conf`. The plan is to use the `[general]` section add a new entry,
245+
`persistent_store_connection_data`, where a JSON object will be used to provide
246+
all the configuration parameters required to access both the tamper-resistant
247+
transparency log and time-series persistent datastore.
239248
- A second PR will give the `verifier` the ability to extract and store "TPM
240249
clock information". This might include changes on the database schema.
241-
- A third PR will provide a CLI utility to perform offline attestation ### Test
242-
Plan
250+
- A third PR will provide a CLI utility to perform offline attestation
243251

252+
### Test Plan
244253
<!--
245254
**Note:** *Not required until targeted at a release.*
246255
@@ -299,4 +308,5 @@ Use this section if you need things infrastructure related specific to your enha
299308
new subproject, repos requested, github webhook, changes to CI (travis).
300309
-->
301310

302-
- Some sort of external time-series datastore and tamper-resistant transparency log will be needed in order to enable this feature.
311+
- Some sort of external time-series datastore and tamper-resistant transparency
312+
log will be needed in order to enable this feature.

0 commit comments

Comments
 (0)