@@ -97,8 +97,9 @@ A good summary is probably at least a paragraph in length.
97
97
Provide Keylime with the ability to store all the required information to
98
98
perform a full attestation, in a persistent external time-series datastore.
99
99
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
102
103
metadatastore (e.g. transparency log)
103
104
104
105
## Motivation
@@ -111,10 +112,10 @@ this enhancement. Describe why the change is important and the benefits to user
111
112
The main motivation for adding this functionality is to give auditors and other
112
113
compliance officers the ability to answer, with a proper degree of certainty
113
114
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.,
118
119
` registrar ` and ` verifier ` ) and thus need to design with these boundary
119
120
conditions in mind.
120
121
@@ -128,6 +129,8 @@ know that this has succeeded?
128
129
- Add functionality on the ` registrar ` to record (in a tamper-resistant
129
130
transparency log) the association between the EK and AIK (i.e.
130
131
` 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
131
134
- Add functionality on the ` verifier ` to record (in a time-series persistent
132
135
datastore) all the information needed to perform attestation standlone (i.e.,
133
136
quotes and MB/IMA logs)
@@ -144,8 +147,8 @@ and make progress.
144
147
145
148
- The interaction between the time-series persistent datastore and
146
149
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
149
152
code which will interact with such stores are outside of the scope.
150
153
151
154
@@ -173,14 +176,17 @@ every time an `agent` is restarted on Keylime.
173
176
- The ` verifier ` will be modified to take the ` json_response ` (python
174
177
dictionary) from the ` agent ` - which will include both quotes and logs (MB
175
178
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.
178
180
- Two pieces of information: the name of a python module to be dynamically
179
181
imported (which will contain code used to interact with these new proposed
180
182
stores) and the connection paramaters (for these new proposed stores) will be
181
183
supplied by the user as two new parameters under ` [cloud_verifier] ` and
182
184
` [registrar] ` section: ` persistent_store_import ` and
183
185
` 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.
184
190
- A new CLI interface - ` keylime_attest ` - will contact both the transparency
185
191
log and the time-series datastore, get a list of AIKs proven to be associated
186
192
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.
235
241
- The first PR will provide the "persistent datastore" plugin capability, to be
236
242
called from with both ` registrar ` and ` verifier ` code. It will include a
237
243
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.
239
248
- A second PR will give the ` verifier ` the ability to extract and store "TPM
240
249
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
243
251
252
+ ### Test Plan
244
253
<!--
245
254
**Note:** *Not required until targeted at a release.*
246
255
@@ -299,4 +308,5 @@ Use this section if you need things infrastructure related specific to your enha
299
308
new subproject, repos requested, github webhook, changes to CI (travis).
300
309
-->
301
310
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