-
Notifications
You must be signed in to change notification settings - Fork 15
Three Part Key Derivation #33
Comments
Issue-Label Bot is automatically applying the label Links: app homepage, dashboard and code for this bot. |
Three Part Key Derivation: |
so the one phase I'm missing is how/when does the agent register itself? is it after the tenant tells the registrar to add it to it's table or is it when it agent node initially boots (which would mean that the registrar endpoint would be given in clear init data, which I think was mentioned but I could be dreaming things like that at this point :-]) |
from meeting chat log (for reference): Andrew Toth |
If we start up the agent on its own you see the connection init in the stack trace:
So it happens in It would be nice to have it in a flow chart / uml style, more than a presentation (google-doc, pptx) format. |
The agent registers itself when it boots ups. No interaction is needed with anyone else. The way that the agent discovers the registrar is either via config or via DNS mapping (i.e., keylime-registar.local or something). The protocol that the agent runs with the registrar is secured directly (i.e., not with TLS). It is possible for an attacker to man in the middle the registrar interaction. No private information is leaked during this process. An attacker *can* cause the node to register with the wrong registrar, but this will be detected later. When the tenant and CV talk to the registrar, they use TLS so they can ensure they are talking to the right one.
…-Nabil
--
Nabil Schear, Ph.D.
Senior Staff, Secure Resilient Systems and Technology Group
MIT Lincoln Laboratory, 244 Wood St, Lexington, MA 02420
Tel: 781-981-5744 Office: C-290F
From: Luke Hinds <[email protected]>
Reply-To: keylime/keylime-docs <[email protected]>
Date: Thursday, May 2, 2019 at 9:28 AM
To: keylime/keylime-docs <[email protected]>
Cc: "Schear, Nabil - 0553 - MITLL" <[email protected]>, Mention <[email protected]>
Subject: Re: [keylime/keylime-docs] Three Part Key Derivation (#33)
so the one phase I'm missing is how/when does the agent register itself? is it after the tenant tells the registrar to add it to it's table or is it when it agent node initially boots (which would mean that the registrar endpoint would be given in clear init data, which I think was mentioned but I could be dreaming things like that at this point :-])
If we start up the agent on its own you see the connection init in the stack trace:
Using config file /etc/keylime.conf
2019-05-02 13:21:58.859 - keylime.tpm - WARNING - INSECURE: Keylime is using a software TPM emulator rather than a real hardware TPM.
2019-05-02 13:21:58.859 - keylime.tpm - WARNING - INSECURE: The security of Keylime is NOT linked to a hardware root of trust.
2019-05-02 13:21:58.859 - keylime.tpm - WARNING - INSECURE: Only use Keylime in this mode for testing or debugging purposes.
2019-05-02 13:21:58.859 - keylime.tpm2 - INFO - Taking ownership with config provided TPM owner password: keylime
2019-05-02 13:21:59.201 - keylime.tpm2 - INFO - TPM Owner password confirmed: keylime
2019-05-02 13:21:59.201 - keylime.tpm2 - INFO - Flushing old ek handle: 0x81000000
2019-05-02 13:22:00.277 - keylime.tpm2 - WARNING - No EK certificate found in TPM NVRAM
2019-05-02 13:22:00.278 - keylime.tpm2 - INFO - Flushing old ak handle: 0x81000001
2019-05-02 13:22:02.770 - keylime.cloudagent - INFO - Agent UUID: D432FBB3-D2F1-4A97-9EF7-75BD81C00000
Traceback (most recent call last):
File "/usr/bin/keylime_agent", line 11, in <module>
load_entry_point('keylime==1.2', 'console_scripts', 'keylime_agent')()
File "/usr/lib/python2.7/site-packages/keylime-1.2-py2.7.egg/keylime/cloud_agent.py", line 519, in main
keyblob = registrar_client.doRegisterAgent(registrar_ip,registrar_port,agent_uuid,tpm_version,ek,ekcert,aik,ek_tpm,aik_name)
File "/usr/lib/python2.7/site-packages/keylime-1.2-py2.7.egg/keylime/registrar_client.py", line 139, in doRegisterAgent
context=None)
File "/usr/lib/python2.7/site-packages/keylime-1.2-py2.7.egg/keylime/tornado_requests.py", line 38, in request
response = http_client.fetch(request)
File "/usr/lib64/python2.7/site-packages/tornado/httpclient.py", line 118, in fetch
self._async_client.fetch, request, **kwargs))
File "/usr/lib64/python2.7/site-packages/tornado/ioloop.py", line 581, in run_sync
return future_cell[0].result()
File "/usr/lib64/python2.7/site-packages/tornado/concurrent.py", line 260, in result
raise_exc_info(self._exc_info)
File "<string>", line 3, in raise_exc_info
socket.error: [Errno 111] Connection refused
So it happens in keylime/registrar_client.py in the function doRegisterAgent
It would be nice to have it in a flow chart / uml style, more than a presentation (google-doc, pptx) format.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
perfect will add that detail. |
This looks good to me. A few points (which are maybe a little pedantic):
|
Thanks Charlie, good notes. I definitely didn't mean to inadvertently mislead, so I'll update wrt those points |
issue to capture Three Part Key Derivation (TPKD) flow to add to documentation and presentations
The text was updated successfully, but these errors were encountered: