Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1.  From EVC perspective, identifying an EVE instance with the incoming X.509 client certificate will not work, since the client certificate may not be from the actual client anymore (instead it is from the proxy server). Or in case of load-balancing proxies, EVC might not have access to any client certificate.
  2.  From EVE perspective, using existing root CA to verify EVC identity will not work, as the incoming X.509 certificate from EVC may not be from the actual EVC server anymore (instead it is from the proxy server)
  3.  Since proxy is terminating TLS and re-opening TLS on the other segment, there is a possibility of payload getting modified in the middle. Without any mechanisms to detect this, this can compromise integrity of EVE-EVC communication channel
  4. Since proxy can inspect the TLS payload in clear text, sensitive parts of payloads(like access credentials, keys etc) should be protected from getting exposed in transit.

Overview 

Therefore, to enable EVE connectivity in such environments where proxy is used, following mechanism is used.

...

  1.  EVE uses its device private key to sign the payload. The device certificate carries the public key. So EVC can validate the signature using device certificate
  2.  EVC uses private key of its choice, makes the corresponding certificate available for download by anyone in the Internet. EVC signs using its private key, and EVE uses the published certificate to validate the signature
  3. The certificates themselves are exchanged using secure transactions. (please see "Provisioning" section below)
  4.  As long as these EVE and EVC private keys are protected at their endpoints, signatures can't be forged in transit

Provisioning of X.509 Certificates for Envelope Verification

To use payload envelopes, both EVE and EVC need to know the certificates of the other party, before they can start sending payloads with envelopes carrying signatures of the payload. This is how they are provisioned:

...

This is a normative reference to the various EVC APIs, their v1/v2 differences, the payload fields, components of envelope etc.

OrderAPI Version OperationTLS Client CertArgsResponseRequest Enveloped?Response Enveloped?Context of invocation Comments?
1edgeDevice/registerv1POSTonboarding certificateonboarding key, serial, device certstandard HTTP response codeNoNoinitial onboarding
1edgeDevice/registerv2POSTNoneonboarding key, serial, device certstandard HTTP response codeYes, signed by onboarding certificateNoinitial onboarding
2

edgeDevice/Certs

(new)

v1/v2GETNone. Preference is to use HTTP if proxy supports.NoneController Certs, and HTTP response codeNoNoat every boot, if device does not have any controller cert
3edgeDevice/configv1POSTdevice certificatedevice certificateDevice ConfigurationNoNoat boot time. When we act on PCR values, PCR Quote will have to be sent along with the config request
3edgeDevice/configv2POSTNonedevice certificateDevice ConfigurationYes, signed by device certificate, and contains device certificate Yes, signed by Controller Cert shared in Order 2at boot time. When we act on PCR values, PCR Quote will have to be sent along with the config request
4

edgeDevice/id/<uuid>/attest

Sub-type ATTEST_REQ_CERT

v2POSTNoneAdditional Certs created by Devicestandard HTTP response codeYes, signed by device certificate. Envelope has device UUIDNoat boot timeenvelope to have device UUID or truncated hash of device cert?
5

edgeDevice/id/<uuid>/attest

Sub-type

ATTEST_REQ_NONCE

v2POSTNone NoneNonceYes, signed by device certificate. Envelope has device UUIDYes, signed by Controller Cert shared in Order 2Precedes PCR Quote POSTenvelope to have device UUID or truncated hash of device cert?
6

edgeDevice/id/<uuid>/attest

Sub-type

ATTEST_REQ_QUOTE

v2POSTNoneNonce, PCR Quote. Quote is signed with restricting signing key from deviceAttestResult(pass, fail) along with standard HTTP response codeYes, signed by device certificate. Envelope has device UUIDYes, signed by Controller Cert shared in Order 2Precedes config requestenvelope to have device UUID or truncated hash of device cert?
7edgeDevice/configv1POSTdevice certificatedevice UUID, hash of current configDevice Configuration, sensitive data encrypted with shared symmetric keyNoNoWhen we act on PCR values, PCR Quote will have to be sent along with the config request
7edgeDevice/configv2POSTdevice certificatedevice UUID, hash of current configDevice Configuration, sensitive data encrypted with shared symmetric keyYes, signed by device certificate. Envelope has device UUIDYes, signed by Controller Cert shared in Order 2When we act on PCR values, PCR Quote will have to be sent along with the config requestenvelope to have device UUID or truncated hash of device cert?