Intel SGX - Attestazione remota

2

Attualmente sto leggendo su SGX di Intel, in particolare sulla parte di attestazione remota. Ho delle domande su questo argomento.

Consideriamo il seguente protocollo:

L'enclave A e B eseguono l'attestazione remota. Ciascuno di essi genera una coppia di chiavi asimmetriche (sk_X, pk_X). Si scambiano le virgolette:

A -> B: QUOTE{pk_A}
B -> A: QUOTE{pk_B}

Consideriamo che c'è un attaccante MitM, che intercetta le cui citazioni e le inoltra. È possibile che l'attaccante legga le chiavi pubbliche o sia in qualche modo crittografato? Non sono riuscito a trovare le informazioni corrette nella documentazione.

Ho trovato il seguente documento: intel-sgx -sviluppatore-guida

A quote includes the following data:

  • Measurement of the code and data in the enclave.
  • A hash of the public key in the ISV certificate presented at enclave initialization time.
  • The Product ID and the Security Version Number (SVN) of the enclave.
  • Attributes of the enclave, for example, whether the enclave is running in debug mode.
  • User data included by the enclave in the data portion of the report structure. Allows establishing a secure channel bound to the remote attestation process so a remote server may provision secrets to the entity that has been attested
  • A signature block over the above data, which is signed by the Intel EPID group key

Sembra che tutti siano in grado di leggere i dati. Per prevenire un attacco MitM, le enclave devono verificare l'hash della chiave pubblica dell'ISV (fornitore di software indipendente) e forse l'ID del prodotto.

    
posta Donut 13.01.2018 - 16:26
fonte

1 risposta

1

L'articolo Esempio di codice: esempio di estensioni remote di Intel Software Guard Extensions End-to-End (di John M. di Intel), descrive un esempio di attestato remoto. (Il codice sorgente della maggior parte delle funzioni descritte nell'articolo può essere trovato qui ).

Tra gli altri, l'articolo cita la struttura della citazione di attestazione remota, sgx_quote_t :

The structure of the quote is defined in sgx_quote.h:

typedef struct _quote_t
{
    uint16_t            version;        /* 0   */
    uint16_t            sign_type;      /* 2   */
    sgx_epid_group_id_t epid_group_id;  /* 4   */
    sgx_isv_svn_t       qe_svn;         /* 8   */
    sgx_isv_svn_t       pce_svn;        /* 10  */
    uint32_t            xeid;           /* 12  */
    sgx_basename_t      basename;       /* 16  */
    sgx_report_body_t   report_body;    /* 48  */
    uint32_t            signature_len;  /* 432 */
    uint8_t             signature[];    /* 436 */
} sgx_quote_t;

Uno dei membri della struct sgx_report_body_t (definito in sgx_report.h ) è report_data , il cui tipo è sgx_report_data_t .
report_data è l'informazione arbitraria che un'enclave può includere all'interno della sua citazione di attestazione remota. È solo 512 bit, quindi probabilmente inserirai un hash di una chiave pubblica (e invierai la chiave pubblica stessa insieme alla citazione).

In ogni caso, se ho capito bene, report_data non è crittografato per impostazione predefinita.


Si noti che supponendo che l'attaccante non possa eseguire codice arbitrario all'interno di un'enclave, non possono eseguire il MitM classico di uno scambio di chiavi Diffie-Hellman (come descritto qui ), poiché non possono creare una citazione con una firma valida.

    
risposta data 23.01.2019 - 15:47
fonte

Leggi altre domande sui tag