# Trusted Execution Technology

La Trusted Execution Technology (abbreviato in TXT), precedentemente conosciuta come "La Grande Technology", è una serie di estensioni hardware per l'esecuzione di calcolo sicuro e criptato. La tecnologia è integrata nei processori Intel con lo scopo di fornire agli utenti,specialmente in campo aziendale e militare, un metodo efficace per proteggersi dagli attacchi informatici mirati a sottrarre informazioni sensibili, ma anche a difendere il copyright ed eliminare le copie di software non autorizzate.
Intel TXT è una tecnologia hardware le cui funzioni principali sono:
* Attestare l’autenticità di una piattaforma e del suo sistema operativo
* Assicurare che un sistema operativo autentico nasca in un ambiente affidabile, in modo che il sistema stesso nella sua completezza sia considerato affidabile
* Fornire un sistema sicuro, con ulteriori capacità di protezione che non sono presenti in sistemi operativi non approvati
Tale tecnologia utilizza Trusted Platform Module(TPM) e tecniche crittografiche per fornire valutazioni dei componenti del software e della piattaforma, in modo che il sistema software e le applicazioni locali e remote di management utilizzino queste valutazioni per prendere decisioni attendibili.
Intel TXT si basa sull’iniziativa del Trusted Computing Group (TCG) per promuovere la sicurezza nell’utilizzo dei computer. Tale tecnologia difende dagli attacchi software mirati a rubare informazioni sensibili, corrompendo il sistema o il codice BIOS, oppure modificando la configurazione della piattaforma.

## Dettagli

Il Trusted Platform Module (TPM), come specificato dalla TCG, fornisce molte funzioni sulla sicurezza che includono registri speciali (chiamati Platform Configuration Registers – PCR), i quali contengono varie valutazioni in posizioni protette, in maniera da prevenire attacchi di spoofing.
Le misurazioni consistono in un hash crittografico che utilizza il Secure Hashing Algorithm (SHA). La specifica TPM v1.0 utilizza l'algoritmo di Hashing SHA-1. Le versioni di TPM più recenti (v2.0+) necessitano di SHA-2.
Una caratteristica desiderata di un algoritmo Hash crittografico è che il risultato dell’Hash (inteso come Hash digest o un Hash) di qualunque coppia di moduli produca lo stesso valore Hash solo se i moduli sono identici.

### Valutazioni

Le valutazioni possono riferirsi a codici, strutture dati, configurazioni, informazioni, o qualsiasi cosa che può essere caricata in una memoria. TCG richiede che i codici non vengano eseguiti fintanto che non siano valutati.
Per assicurare una particolare sequenza di misurazioni, le misurazioni hash in una sequenza non vengono scritte su PCR differenti, ma il PCR è “esteso” con la misura.
Questo significa che il TPM prende il valore corrente del PCR e la misurazione che deve essere estesa li unisce (hashes) e successivamente sostituisce il contenuto del PCR con il risultato dell’Hash.
Da queste operazioni, ne consegue che l’unico modo per raggiungere una particolare misurazione del PCR è quella di estendere esattamente le stesse misurazioni nello stesso ordine.
Quindi, se un qualsiasi modulo che sia già stato valutato viene modificato, il risultato della misurazione del PCR sarà diverso e perciò sarà più semplice identificare se un codice o una configurazione di dati è stata alterata o corrotta.
Il meccanismo di estensione del PCR è cruciale per stabilire una catena di fiducia negli stati del software.

### Catene di fiducia

Questa tecnologia supporta sia la catena statica di fiducia che la catena dinamica.
La catena di fiducia statica si avvia quando la piattaforma viene accesa (oppure si effettua il reset), riportando tutti i PCR ai propri valori predefiniti.
Per le piattaforme server, la prima valutazione viene effettuata dall’hardware (ad esempio il microprocessore) per valutare un modulo firmato digitalmente (chiamato Authenticated Code oppure ACM Module) fornito dal produttore del chipset.
Il processore convalida la firma digitale e l’integrità del modulo firmato prima di eseguirlo.
L’AMC successivamente valuta il primo modulo del codice BIOS, il quale può eseguire misure aggiuntive.
Le misurazioni dell’ACM e dei moduli del codice BIOS vengono estesi al PCR0, che contiene il CRTM (core root of trust measurement) statico, oltre alle misurazioni del BIOS Trusted Computing Base(TCB). Il BIOS misura ulteriori componenti nei PCR come segue:
* PCR0 – CRTM, codice BIOS, e Host Platform Extensions
* PCR1 – Host Platform Configuration
* PCR2 – Opzione ROM Code
* PCR3 – Opzione ROM Configuration e Data
* PCR4 – IPL (Initial Program Loader) Code (solitamente il Master Boot Record – MBR-)
* PCR5 – IPL Code Configuration e Data (per essere usato dal IPL Code)
* PCR6 – State Transition e Wake Events
* PCR7 – Host Platform Manufacturer Control
La catena di fiducia dinamica si avvia quando sul sistema operativo viene invocata un’istruzione di sicurezza speciale, la quale “resetta” i PCR dinamici (PCR17–22) ai loro valori predefiniti e dà inizio alle misurazioni.
La prima misurazione dinamica viene effettuata dall’hardware (ad esempio il microprocessore) per misurare un altro modulo firmato digitalmente (conosciuto come SINIT ACM) che è anche fornito dal produttore del chipset e la cui firma e integrità sono verificate dal processore.
Questo è anche conosciuto come Dynamic Root of Trust Measurement (DRTM).
SINIT ACM successivamente misura il primo modulo di codice del sistema operativo, riferiti al launch measured environment (ambiente controllato - MLE). Prima che venga data la possibilità di eseguire MLE, SINIT ACM verifica che la piattaforma abbia i prerequisiti del Launch Control Policy (LCP) impostati dai proprietari della piattaforma.
LCP consiste in tre parti:
1. Verificare che la versione del SINIT sia uguale oppure più recente rispetto al valore specificato.
2. Verificare che la configurazione della piattaforma (PCONF) sia valida paragonando PCR0–7 a dei parametri conosciuti e verificati (il proprietario della piattaforma decide quali PCR includere).
3. Verificare che MLE sia valido paragonando le sue misure a una lista di parametri già conosciuti e verificati.
L’integrità di LCP e della sua lista di misurazioni valide sono protette salvando le misurazioni hash della policy nel TPM in una posizione protetta e non volatile, che può essere modificata solamente dal proprietario della piattaforma.

### Esecuzione come Sistema Operativo affidabile

Una volta che i requisiti di LCP sono stati soddisfatti, SINIT ACM permette a MLE di lavorare come un Trusted OS (sistema operativo affidabile) abilitando l’accesso a registri di sicurezza speciali e al livello di accesso TPM Locality 2. MLE può ora eseguire ulteriori misure dei PCR dinamici.
I PCR dinamici contengono misurazioni di:
* PCR17 – DRTM e modalità del controllo del lancio
* PCR18 – Trusted OS codice di avvio (MLE)
* PCR19 – Trusted OS (per esempio configurazione OS)
* PCR20 – Trusted OS (per esempio il kernel e altri codici OS)
* PCR21 – com'è definito dal Trusted OS
* PCR22 – com'è definito dal Trusted OS
Questa tecnologia fornisce anche un modo più sicuro al sistema operativo per inizializzare la piattaforma.
In contrapposizione al normale processo di inizializzazione che coinvolge il processore boot-strap-processor (BSP) mandando un Start-up Inter-Processor Interrupt (SIPI) per ogni Application Processor, così facendo si avvia ogni processore in “real mode” e successivamente si passa alla “virtual mode” e infine alla “protected mode”. Il sistema operativo evita questa vulnerabilità mettendo in atto un avvio sicuro (lancio misurato), il quale mette gli Application Processors in uno stato dormiente dal quale vengono direttamente avviati in “protected mode”.

## Applicazione

I valori PCR sono disponibili sia in locale che in remoto. Inoltre il TPM ha la capacità di firmare digitalmente i valori PCR in modo che qualsiasi entità possa verificare da dove provengano le misure e se sono protette da un TPM, in questo modo abilitando Remote Attestation per identificare manomissioni, corruzioni e software maligni. In aggiunta, questi valori possono essere usati per identificare l’ambiente di esecuzione (la versione particolare del BIOS, il livello OS, configurazione, ecc.) paragonandoli alle loro rispettive liste di parametri validi e verificati, al fine di categorizzare ulteriormente la piattaforma.
Questa abilità di valutare e assegnare i livelli di sicurezza alle piattaforme è conosciuta come Trusted Compute Pools.
Alcuni esempi di come sono utilizzati i Trusted Compute Pools:
* Isolamento: l’abilità di controllare se una piattaforma si connette alla rete di produzione o se viene messo in quarantena in base al livello di fiducia oppure al mancato rispetto della propria politica di controllo del lancio.
* Trust Based Policy: preclude il funzionamento di determinate applicazioni solo su piattaforme che raggiungono un livello di fiducia specificato.
* Compliance e Auditing: dimostrano che dati critici, personali o sensibili sono stati analizzati solamente su piattaforme aventi i requisiti di sicurezza.
Numerose piattaforme server includono Intel TXT. La funzionalità TXT viene utilizzata da numerosi venditori di software come HyTrust, PrivateCore, Citrix, Cloud Raxak e VMware.
I progetti open source utilizzano la funzionalità TXT; per esempio Trusted Boot fornisce un sistema integro basato su TXT per il Kernel di Linux e l'hypervisor Xen.