Profilo ACPI dell'ambiente di esecuzione attendibile
Licenze: Microsoft accetta di concedere all'utente una licenza senza addebiti, royalty-free per le relative attestazioni necessarie solo per rendere, usare, vendere, offrire per la vendita, l'importazione o distribuire qualsiasi implementazione di questa specifica. "Attestazioni necessarie" sono quelle attestazioni di proprietà microsoft o di brevetti controllati da Microsoft che sono tecnicamente necessari per implementare le parti necessarie (che includono anche gli elementi obbligatori di parti facoltative) di questa specifica, in cui la funzionalità che causa la violazione è descritta in dettaglio e non semplicemente a cui fa riferimento in questa specifica.
1.0 Sfondo
Questa specifica definisce l'oggetto dispositivo ACPI per un dispositivo TPM 2.0 e i metodi di controllo associati all'oggetto dispositivo ACPI necessario per Windows 8. I metodi di controllo implementano l'equivalente dell'interfaccia ACPI di presenza fisica TCG, l'equivalente dell'interfaccia di mitigazione degli attacchi di reimpostazione della piattaforma e facoltativamente un metodo ACPI per inviare un comando al dispositivo TPM 2.0.
Viene usata una tabella ACPI statica aggiuntiva (TPM2) per definire il meccanismo di comunicazione tra il dispositivo TPM 2.0 e il sistema operativo Windows 8.
Nota
Microsoft fa riferimento al gruppo di calcolo attendibile "TPM. Termine successivo come "TPM 2.0"
2.0 Requisiti
Questa specifica presuppone una piattaforma di calcolo che supporta la comunicazione basata su ACPI come specificato in [ACPI09] tra un sistema operativo e un ambiente firmware.
3.0 Scenari di utilizzo (ad esempio solo)
3.1 Invio di un comando di presenza fisica
Uno scenario di utilizzo tipico è il seguente:
All'interno dell'ambiente del sistema operativo, un'applicazione rileva che il dispositivo TPM 2.0 non è completamente sottoposto a provisioning per l'uso per Windows 8. Un esempio di come questo potrebbe verificarsi è se viene installata una nuova immagine del sistema operativo dopo che un'immagine del sistema operativo precedente ha effettuato il provisioning dell'immagine TPM 2.0.
L'applicazione avvia una procedura guidata del sistema operativo per preparare il dispositivo TPM 2.0 da usare.
La procedura guidata interagisce con l'amministratore del computer tramite l'interfaccia utente e determina che l'amministratore deve cancellare il dispositivo TPM 2.0 per eseguirne il provisioning perché il valore di autorizzazione di reimpostazione del dispositivo TPM 2.0 non è disponibile.
Per cancellare il dispositivo TPM 2.0, il sistema operativo richiede (eseguendo un metodo di controllo ACPI per l'oggetto dispositivo TPM 2.0) il firmware esegue l'operazione per cancellare il dispositivo TPM 2.0 all'avvio successivo fornito che un utente fisicamente presente conferma di approvare la cancellazione del dispositivo TPM 2.0.
Il sistema operativo riavvia la piattaforma.
Durante la prima parte del processo di avvio, il firmware riconosce la richiesta in sospeso dal sistema operativo per cancellare il dispositivo TPM 2.0.
Il firmware presenta un'interfaccia utente a un utente fisicamente presente chiedendo loro di eseguire alcune azioni per confermare la cancellazione del dispositivo TPM 2.0.
Un utente presente fisicamente conferma la cancellazione del dispositivo TPM 2.0.
Il firmware cancella il dispositivo TPM 2.0 usando l'autorizzazione della gerarchia della piattaforma.
Se necessario, per mantenere la cancellazione del dispositivo TPM 2.0, la piattaforma viene riavviata immediatamente.
Avvio del sistema operativo.
Le query del sistema operativo (tramite un metodo di controllo ACPI nel dispositivo TPM 2.0) se l'ultima richiesta del sistema operativo per cancellare il dispositivo TPM 2.0 è stata completata correttamente, (b) non è stata confermata dall'utente fisicamente presente o (c) ha avuto un altro errore. Di seguito si presuppone che il dispositivo TPM 2.0 sia stato cancellato correttamente.
La procedura guidata per il provisioning dei dispositivi TPM 2.0 all'interno del sistema operativo esegue comandi aggiuntivi per preparare il dispositivo da usare da Windows.
3.2 Richiesta di memoria da cancellare nell'avvio successivo
Questo scenario illustra come la funzionalità di memoria chiara del sistema consente di contrastare gli attacchi che raccolgono la memoria del sistema per il materiale chiave dopo il riavvio imprevisto della piattaforma.
Dall'interno del sistema operativo, un amministratore in un sistema con un dispositivo TPM 2.0 attiva la funzionalità BitLocker per il volume del sistema operativo.
La funzionalità BitLocker chiama il metodo di controllo ACPI del dispositivo TPM 2.0 per impostare il bit ClearMemory definito nella specifica di mitigazione degli attacchi di reimpostazione della piattaforma TCG.
La funzionalità BitLocker crittografa il volume del sistema operativo.
L'amministratore lascia il sistema automatico con lo schermo bloccato.
Una persona dannosa ruba il sistema mentre è in esecuzione.
La persona dannosa inserisce una chiavetta USB e rimuove rapidamente la batteria del sistema e la inserisce nuovamente.
Il sistema inizia l'avvio quando la batteria viene nuovamente inserita.
Poiché il bit ClearMemory è stato impostato in precedenza, il firmware cancella l'intera memoria di sistema prima di avviare qualsiasi codice non fornito dal produttore della piattaforma.
La persona dannosa configura il firmware durante l'avvio per avviare il dispositivo USB anche se il codice sul dispositivo USB non è firmato correttamente.
Il codice nel dispositivo USB analizza la memoria di sistema per la chiave master del volume bitLocker, ma non viene trovata.
Avviso
I passaggi da 11 a 16 sono simili ai passaggi precedenti, ma usano l'interfaccia UEFI anziché ACPI
La persona dannosa tenta di avviare normalmente il sistema.
Poiché BitLocker è stato abilitato con la protezione della chiave TPM, questo consente a BootMgr di "annullare" la chiave master del volume per il volume del sistema operativo perché le misurazioni corrette si trovano nel dispositivo TPM 2.0 quando BootMgr viene eseguito.
L'avvio procede alla schermata di accesso del sistema operativo.
La persona dannosa rimuove nuovamente la batteria e avvia il codice da un dispositivo USB.
Poiché il bit ClearMemory è stato impostato, il firmware di sistema cancella l'intera memoria di sistema durante l'avvio.
Anche se il codice dal dispositivo USB analizza la memoria di sistema, la chiave di crittografia del volume del sistema operativo non è in memoria.
3.3 Invio di un comando al dispositivo TPM 2.0
Questo esempio non è applicabile per tutte le architetture di sistema.
Il driver windows TPM 2.0 vuole eseguire un comando al dispositivo TPM 2.0.
Il driver windows TPM 2.0 scrive il comando per l'esecuzione nell'indirizzo fisico letto dall'area di controllo definita da ACPI in precedenza durante l'inizializzazione del driver TPM 2.0 di Windows.
Il driver windows TPM 2.0 esegue il metodo di controllo ACPI per eseguire un comando TPM 2.0.
Il driver windows TPM 2.0 esegue il polling dei registri nell'area di controllo finché non indicano che il comando TPM è stato completato.
Il driver TPM di Windows legge la risposta del comando dall'indirizzo fisico letto dall'area di controllo definita da ACPI in precedenza durante l'inizializzazione del driver TPM di Windows.
4.0 Requisiti ACPI generali per il sistema e il dispositivo TPM 2.0
4.1 Considerazioni sulla potenza
ACPI D1/D2
Il dispositivo TPM 2.0 PUÒ supportare ACPI D1 e/o ACPI D2, ma DEVE comportarsi come se fosse in stato di alimentazione ACPI D0 mentre in D1 o D2.
ACPI S3 (sospensione)
Il TPM 2.0 PUÒ supportare S3, ma l'ingresso e l'uscita dallo stato di alimentazione bassa S3 per il dispositivo deve essere controllato dal produttore di sistema/piattaforma.
Il sistema operativo (o altro software in esecuzione nell'ambiente del sistema operativo) non deve essere in grado di posizionare il dispositivo TPM 2.0 in S3 o causare l'uscita del dispositivo TPM 2.0 da S3. Ad esempio, se il dispositivo TPM 2.0 è in un bus, il sistema operativo NON DEVE essere in grado di arrestare il bus causando il dispositivo TPM 2.0 di immettere S3.
Il driver TPM Windows 8 tenterà di eseguire un comando TPM2_Shutdown prima di immettere S3 (sospensione).
Se una piattaforma hardware supporta S3 e TPM non mantiene lo stato mentre il sistema è in S3, la piattaforma DEVE emettere i comandi necessari TPM2_Init e TPM2_Startup(TPM_SU_STATE) durante il ripreso S3. È possibile che il sistema operativo non abbia completato il comando TPM2_Shutdown prima di accedere a S3. Ciò potrebbe causare la restituzione del risultato di TPM2_Startup(TPM_SU_STATE) per restituire un errore. Il firmware di sistema che riprende da S3 DEVE gestire in modo appropriato un errore di TPM2_Startup. Ad esempio, disabilitando l'accesso al TPM tramite hardware, emettendo un comando TPM2_Startup(TPM_SU_CLEAR) e configurando il dispositivo in modo sicuro eseguendo azioni come l'estensione di un separatore con un digest di errore (0x01) in PCR 0-7 e bloccando gli indici NV.
Il sistema DEVE tenere conto del tempo trascorso durante S3 decrementando il numero di errori di attacco del dizionario TPM (TPM_PT_LOCKOUT_COUNTER) per il momento in cui il sistema era in S3 per l'intervallo di blocco (TPM_PT_LOCKOUT_INTERVAL). Ciò può richiedere un'implementazione della piattaforma per fornire la tensione di standby per conservare l'orologio TPM e/o lo stato durante S3 o una piattaforma potrebbe anche fornire informazioni sulla quantità di tempo trascorso mentre il sistema era in uno stato di bassa potenza in modo che il TPM possa aggiornare in modo affidabile il numero di errori di autorizzazione per la logica di attacco del dizionario.
Stati di alimentazione ridotta per sistemi di standby connessi
Windows 8 non esegue azioni aggiuntive associate al TPM all'ingresso e all'uscita dagli stati di alimentazione bassa per i sistemi di standby connessi. La piattaforma DEVE eseguire tutte le azioni necessarie per il comportamento del TPM come se fosse in D0 ogni volta che il sistema entra e esce da stati di bassa potenza per i sistemi di standby connessi. Questo PUÒ richiedere un'implementazione della piattaforma per fornire la tensione di standby per alimentare l'orologio TPM e/o mantenere lo stato. In alternativa, una piattaforma POTREBBE dover fornire in modo sicuro informazioni sulla quantità di tempo trascorsa mentre il sistema era in uno stato di bassa potenza al TPM, in modo che il TPM possa aggiornare in modo affidabile il numero di errori di autorizzazione per la logica di attacco del dizionario.
Sistema disattivato
Il sistema DEVE tenere conto in modo sicuro del tempo trascorso durante l'arresto completo decrementando il numero di errori di attacco del dizionario TPM (TPM_PT_LOCKOUT_COUNTER) per il momento in cui il sistema era in S5 per l'intervallo di blocco (TPM_PT_LOCKOUT_INTERVAL).
4.2 Tabelle ACPI
Un sistema con un dispositivo TPM 2.0 deve fornire una tabella di oggetti dispositivo con un ID dispositivo hardware e un fornitore del sistema operativo specifico tabella statica (TPM2) come descritto di seguito.
Sia la tabella TPM2 che l'oggetto dispositivo TPM 2.0 devono essere persistenti dopo la spedizione della piattaforma a un cliente. Ad esempio, le opzioni del firmware non devono consentire di nascondere la tabella TPM2 o l'oggetto dispositivo TPM 2.0. Un'eccezione è se un sistema viene fornito con un'opzione non predefinita per fornire funzionalità TPM 1.2 anziché la funzionalità TPM 2.0 (ad esempio per compatibilità con i sistemi operativi meno recenti come Windows 7). In questa situazione la tabella TPM2 e l'oggetto dispositivo TPM 2.0 possono essere rimossi tramite un'opzione di configurazione BIOS ed enumerazione di un TPM 1.2 eseguito. Nota: un sistema di standby connesso per Windows 8 è necessario per la spedizione, per impostazione predefinita, con un TPM 2.0 visibile al sistema operativo. Contattare Microsoft per indicazioni tecniche sul passaggio da una TPM 2.0 a TPM 1.2 in una piattaforma hardware.
Tabella ACPI dell'oggetto dispositivo 2.3 TPM 2.3
Gerarchia del bus 4.3.1
La tabella Device Object deve essere sotto la tabella DSDT nello spazio dei nomi ACPI. L'oggetto dispositivo TPM 2.0 deve trovarsi nel bus di sistema in "root\_SB".
4.3.2 Identificatore hardware
L'identificatore hardware di plug and play effettivo (ad esempio _HID) per l'oggetto dispositivo TPM 2.0 deve essere "MSFT0101" o il dispositivo DEVE avere un ID compatibile di "MSFT0101" e la _HID potrebbe essere specifica del fornitore.
4.3.3 Descrittori di risorse
L'oggetto dispositivo ACPI TPM 2.0 DEVE richiedere tutte le risorse usate dal dispositivo TPM 2.0.
Metodi di controllo 4.3.4
4.3.4.1 Mitigazione degli attacchi di reimpostazione della piattaforma
Il sistema DEVE implementare tutte le parti correlate ACPI e UEFI di [TCG08] per UEFI. L'oggetto dispositivo DEVE implementare l'interfaccia del metodo di controllo definita nella sezione [TCG08], sezione 6. L'interfaccia è necessaria anche se la piattaforma cancella in modo incondizionato la memoria in ogni avvio. La cancellazione della memoria NON DEVE essere condizionale sullo stato del dispositivo TPM 2.0 (al contrario [TCG08] non richiede la cancellazione della memoria se il TPM 1.2 non è di proprietà. Inoltre, le sezioni 3, 5 di [TCG08] devono essere implementate. La funzione di query _DSM DEVE essere implementata (indice di funzione 0) in base alla specifica ACPI. (Nota: c'è un errore nella specifica ACPI 4.0 sul valore restituito per il metodo _DSM. Il valore restituito del metodo _DSM deve essere un buffer contenente 0x03. L'implementazione DEVE rilevare automaticamente un arresto ordinato del sistema operativo e cancellare il bit ClearMemory su tali eventi.
Nota speciale per i sistemi Arm basati su UEFI con un TPM 2.0: nei sistemi Arm basati su UEFI con un TPM 2.0, Windows 8 richiederà la cancellazione della memoria senza condizioni usando l'interfaccia UEFI in ogni avvio. L'implementazione dell'interfaccia ACPI è ancora necessaria, ma l'interfaccia PUÒ essere implementata per non modificare lo stato dei flag ClearMemory o DisableAutoDetect. Nota: Microsoft consiglia di implementare l'interfaccia ACPI in base alla specifica TCG, in modo che la chiamata all'interfaccia ACPI modifichino lo stato di ClearMemory o DisableAutoDetect.
Interfaccia di presenza fisica 4.3.4.2
Il sistema DEVE implementare la specifica definita in [TCG11] in base alle note aggiuntive seguenti:
L'uso di TPM nella specifica TCG deve essere equivalente al dispositivo TPM 2.0.
I metodi di controllo definiti nella sezione 2 DEVONO essere implementati con le restrizioni seguenti:
La funzione di query _DSM DEVE essere implementata (indice di funzione 0) in base alla specifica ACPI. (Nota: c'è un errore nella specifica ACPI 4.0 sul valore restituito per il metodo _DSM. Il valore restituito del metodo _DSM deve essere un buffer contenente 0x01FF.
L'implementazione DEVE restituire il valore "2: Reboot" per "Get Platform-Specific Action to Transition to Pre-OS Environment". Le operazioni PPI DEVONO essere eseguite per una transizione di un riavvio e DOVREBBERO verificarsi per una transizione di arresto.
L'implementazione dei metodi di controllo seguenti è facoltativa: "Submit TPM Operation Request to Pre-OS Environment" (may return "2: General Failure") and "Submit preferred user language" (may return "3: Not implemented").
I requisiti nella sezione 3 DEVONO essere implementati con le revisioni seguenti:
Il BIOS non deve fornire spazio di archiviazione permanente per il flag NoPPIProvision perché le operazioni autorizzate non sono rilevanti per lo stato del dispositivo TPM 2.0.
La tabella 2 viene modificata nel modo seguente:
Tabella 1: tabella PPI modificata 2
OperationValue
Nome operazione
TPM Stat
Flag Mgmt bios TPM
Obbligatorio e facoltativo
Quando è necessaria la conferma della presenza fisica
Potrebbe essere necessario un ciclo di avvio aggiuntivo
0
Nessuna operazione
M
1-4
Nessuna operazione
M
5
TPM2_ClearControl(NO) +
TPM2_Clear
X
M
NoPPIClear è FALSE
X
6-11
Nessuna operazione
M
12-13
Nessuna operazione
O
14
TPM2_ClearControl(NO) +
TPM2_Clear
X
M
NoPPIClear è FALSE
X
15-16
Nessuna operazione
M
17
SetNoPPIClear_False
X
O1
18
SetNoPPIClear_True
X
O1
Always
19-20
Nessuna operazione
O2
21-22
TPM2_ClearControl(NO) +
TPM2_Clear
X
M
NoPPIClear è FALSE
X
23 - 127
Riservato
>=128
Specifica del fornitore
X
X
O
X
Importante
Per SetNoPPIClear_False: se il BIOS implementa gli elementi contrassegnati come "O1" o "O2" deve implementarli come set. Per nessuna operazione che segue SetNoPPIClear_True, il BIOS non deve implementare le operazioni 19 e 20 se non implementa l'operazione 12.
La tabella 3 viene modificata nel modo seguente:
Operazione
Valore
Operazione
Nome
Comandi TPM inviati da BIOS e altre azioni BIOS per eseguire l'operazione
0
Nessuna operazione
Nessuna operazione
1-4, 6-13, 15-16, 19-20
Nessuna operazione
Nessuna operazione. Tuttavia, il numero di operazione DEVE essere memorizzato e il risultato se viene eseguita una query dal sistema operativo deve restituire l'esito positivo.
5, 14, 21, 22
Cancella
TPM2_ClearControl(NO) +
TPM2_Clear
<PLATFORM RESET>* [*Se necessario per rendere persistenti le modifiche del TPM da TPM2_CLEAR. Microsoft prevede che la maggior parte dei sistemi non sia necessaria.
17
SetNoPPIClear_False
(Richiedi presenza fisica per cancellare).
Questa operazione non modifica lo stato del TPM.
Cancella il flag di gestione TPM BIOS NoPPIClear su FALSE.
18
SetNoPPIClear_True
(Non richiedere la conferma della presenza fisica per cancellare).
Questa operazione non modifica lo stato del TPM.
Imposta il flag di gestione TPM BIOS NoPPIClear su TRUE.
23 - 127
Riservato
Riservato, non implementare o usare
>=128
Specifica del fornitore
Mapping dei comandi TPM a un'operazione specifica del fornitore
Lo spirito della sezione 4 DEVE essere mantenuto per ottenere la conferma da un utente fisicamente presente quando è necessario per eseguire un'operazione, ma il meccanismo effettivo non deve essere premuto. Le chiavi o altri meccanismi per affermare il consenso sono al produttore della piattaforma.
Op
Valore
Operazione
Nome
Conferma
Text
5, 14, 21 e 22
Cancella
È stata richiesta una modifica di configurazione per cancellare il TPM del computer (Trusted Platform Module)
AVVISO: la cancellazione cancella le informazioni archiviate nel TPM. Si perderanno tutte le chiavi create e l'accesso ai dati crittografati da queste chiavi.
Premere <CAK> per cancellare il TPM
Premere <RK> per rifiutare la richiesta di modifica e continuare
18
SetNoPPIClear_True
È stata richiesta una modifica di configurazione per consentire al sistema operativo di cancellare il TPM (Trusted Platform Module) del computer senza chiedere conferma all'utente in futuro.
NOTA: questa azione non cancella il TPM, ma approvando questa modifica di configurazione, le azioni future per cancellare il TPM non richiederanno la conferma dell'utente.
AVVISO: la cancellazione cancella le informazioni archiviate nel TPM. Si perderanno tutte le chiavi create e l'accesso ai dati crittografati da queste chiavi.
Premere <CAK> per approvare le richieste future del sistema operativo per cancellare il TPM
Premere <RK> per rifiutare la richiesta di modifica e continuare
La sezione 5 è informativa.
I sistemi di standby connessi POSSONO impostare NoPPIClear su TRUE e non implementare le operazioni 17 e 18. Ciò significa che non è necessario implementare alcuna finestra di dialogo di conferma per le azioni di presenza fisica perché nessuna operazione di presenza fisica richiederà la conferma dell'utente.
Il firmware DEVE lasciare le gerarchie di archiviazione e verifica dell'autenticità abilitate quando passa il controllo al codice del caricatore del programma iniziale, ad esempio Windows Boot Manager.
4.3.4.3 Metodo ACPI Start facoltativo
Nota: alcune piattaforme POSSONO implementare questo metodo ACPI facoltativo per consentire al sistema operativo di richiedere al firmware di eseguire o annullare un comando TPM 2.0. L'uso del metodo ACPI Start è determinato dal campo StartMethod della tabella ACPI statica (vedere la sezione 4.4.) Se il campo StartMethod della tabella ACPI statica indica l'utilizzo di questo metodo, deve essere implementato il metodo ACPI Start. Le funzioni ACPI definite nel presente documento si trovano nell'oggetto metodo di controllo _DSM. [Nota: questo non è un metodo di controllo nella tabella ACPI TPM2.] Il metodo _DSM definito nel presente documento DEVE essere implementato come segue:
UUID |
Revisione |
Funzione |
Descrizione |
6bbf6cab-5463-4714-b7cd-f0203c0368d4 |
0 |
0 |
Come descritto in [ACPI09], sezione 9.14.1. |
0 |
1 |
Avvio |
Avvio funzione
Argomenti di input:
Arg0 (Buffer): UUID = 6bbf6cab-5463-4714-b7cd-f0203c0368d4
Arg1 (Integer): Revision ID = 0
Arg2 (Integer): Function Index = 1
Arg3 (Package): Arguments = Empty Package
Valore restituito:
Tipo: numero intero
Descrizione del valore restituito:
0: Esito positivo
1: Errore generale
Comportamento funzionale:
Questa funzione indica al sistema di esaminare i registri di stato nell'area di controllo del dispositivo TPM 2.0 ed eseguire l'azione appropriata per eseguire o annullare il comando TPM 2.0.
La funzione non blocca. La chiamata restituirà immediatamente. Non tentare di eseguire l'esecuzione del comando dall'interno del metodo ACPI. Le chiamate AML devono essere brevi. Quando viene restituito il valore restituito 0, il comando inviato è stato accettato e verrà eseguito dal firmware o annullato se il campo Annulla è già impostato. Quando possibile, il sistema deve restituire una risposta TPM anziché un errore generale da questa chiamata. Ad esempio, un comando non può essere elaborato ora, è possibile scrivere un buffer di risposta di TPM2_RC_RETRY e il campo START potrebbe essere CLEARed. Se il comando è stato annullato perché è stato impostato il campo Cancel, questo metodo può scrivere un TPM2_RC_Cancelled codice restituito nel buffer risposta, cancellare il campo Start e restituire un valore pari a 0. In alternativa, se il campo Annulla è impostato, il metodo può restituire un valore pari a 0 e il dispositivo TPM 2.0 può essere completato in un secondo momento o annullare il comando in base ai requisiti per l'annullamento di un comando.
Quando viene restituito il valore restituito 1, il firmware non è in grado di leggere o agire sulla richiesta. Diversamente dal valore restituito, la richiesta equivale a un NO-OP. Esempi sono (a) un driver del sistema operativo non valido richiede l'esecuzione di comandi aggiuntivi prima del completamento di un comando precedente, (b) l'area di controllo non si trova nella memoria fisica [forse a causa di danneggiamento della memoria], oppure (c) gli indirizzi fisici del comando o della risposta non esistono. Un valore restituito pari a 1 potrebbe causare l'arresto del driver TPM 2.0 di Windows usando il dispositivo TPM 2.0 fino al successivo avvio completo del sistema (questo esclude i cicli di ibernazione/ripresa).
Nota: dopo l'avvio dell'esecuzione del comando, questo metodo non viene chiamato una seconda volta se il sistema operativo sceglie l'annullamento del comando attualmente in esecuzione. È tuttavia possibile che il metodo di controllo venga chiamato inizialmente per un comando mentre è impostato il campo cancel.
4.4 TPM2 Tabella ACPI statica
Una tabella ACPI denominata "TPM2" elencata nella tabella ACPI "RSDT" descrive l'interfaccia hardware TPM 2.0 della piattaforma. Il driver Windows TPM 2.0 usa questa tabella per determinare il modo in cui comunica con il dispositivo TPM 2.0. I parametri nella tabella ACPI necessari per supportare questa interfaccia sono illustrati nella tabella seguente.
Tabella 3: layout di tabella ACPI TPM2
Campo |
Lunghezza byte |
Byte Offset |
Descrizione |
||||||||||||||
Intestazione |
|||||||||||||||||
Firma |
4 |
00h |
'TPM2'. Firma per la tabella dell'interfaccia hardware del dispositivo TPM 2.0 |
||||||||||||||
Length |
4 |
04h |
Lunghezza della tabella, in byte, inclusa l'intestazione, a partire dall'offset 0. Questo campo viene usato per registrare le dimensioni dell'intera tabella. |
||||||||||||||
Revisione |
1 |
08h |
Revisione di questa tabella, inclusi i dati e la struttura a cui fa riferimento. Se qualsiasi struttura a cui fa riferimento questa modifica (ad esempio, Area di controllo), questa revisione DEVE modificare. Valore 03h. |
||||||||||||||
Checksum |
1 |
09h |
L'intera tabella, incluso il campo checksum, DEVE aggiungere a zero da considerare valida. |
||||||||||||||
OEM ID |
6 |
0Ah |
ID OEM per specifica ACPI. Stringa fornita dall'OEM che identifica l'OEM (questo può essere il fornitore del chipset). |
||||||||||||||
ID tabella OEM |
8 |
10h |
L'ID tabella OEM è l'ID del modello del produttore (assegnato dall'OEM identificato da "ID OEM"; può essere il fornitore del chipset). |
||||||||||||||
Revisione OEM |
4 |
18h |
Revisione OEM per l'ID tabella OEM specificato. Per ACPI, "[an] Numero di revisione fornito dall'OEM. Si presuppone che i numeri più grandi siano revisioni più recenti." |
||||||||||||||
ID creatore |
4 |
1Ch |
ID fornitore di utilità che ha creato la tabella. Per le tabelle contenenti blocchi di definizione, si tratta dell'ID del compilatore ASL. |
||||||||||||||
Revisione creatore |
4 |
20h |
Revisione dell'utilità che ha creato la tabella. Per le tabelle contenenti blocchi di definizione, si tratta della revisione del compilatore ASL. |
||||||||||||||
Flags |
4 |
24h |
Riservato DEVE sempre essere zero |
||||||||||||||
Indirizzo dell'area di controllo |
8 |
28h |
Indirizzo fisico dell'area di controllo. Può essere presente nella memoria del dispositivo TPM 2.0 o in memoria riservata dal sistema durante l'avvio. Il driver TPM 2.0 mantiene la conoscenza di questo indirizzo in un ciclo di avvio, tra cui i cicli di ibernazione e ripresa. Se il sistema non usa l'area di controllo, questo valore deve essere tutti zero. |
||||||||||||||
Metodo Start |
4 |
30h |
Il selettore del metodo start determina quale meccanismo usa il driver windows TPM 2.0 per comunicare i comandi TPM 2.0 al dispositivo e per notificare al dispositivo TPM 2.0 che un comando è disponibile per l'elaborazione. Questo campo può contenere uno dei valori seguenti:
|
||||||||||||||
Parametri specifici della piattaforma |
Variabile |
34h |
Il contenuto dei parametri specifici della piattaforma è determinato dal meccanismo di avvio usato dall'interfaccia del dispositivo TPM 2.0 del sistema. Questo campo contiene valori che possono essere usati per avviare l'elaborazione dei comandi. Queste informazioni possono essere specifiche del fornitore. Per i valori del metodo Start di 2 o 6 il campo non viene usato e la lunghezza byte è zero. |
4.4.1 Contenuto dell'area di controllo
La struttura Area di controllo contiene campi di stato, nonché altri bit/campi di controllo e uno o più indirizzi. L'area di controllo contiene l'indirizzo fisico del buffer dei comandi e l'indirizzo fisico del buffer di risposta.
Non tutte le implementazioni dell'interfaccia TPM 2.0 usano l'area di controllo, ad esempio un valore del metodo Start pari a 6 non usa l'area di controllo e le informazioni contenute in questa sezione non sono applicabili per la piattaforma.
L'area di controllo DEVE trovarsi nella memoria ACPI AddressRangeReserved.
La struttura Area di controllo viene visualizzata nella tabella seguente e, a meno che non sia specificato altrimenti, tutti gli accessi all'area di controllo vengono eseguiti nel formato endian piccolo.
Tabella 4: Layout area di controllo
Campo |
Lunghezza byte |
Offset |
Descrizione |
Campi stato |
Campi di stato TPM 2.0 |
||
Riservato |
4 |
00h |
Riservato. (DEVE essere zero). |
Errore |
4 |
04 ore |
IMPOSTATO da TPM 2.0 per indicare una condizione di errore |
Annulla |
4 |
08h |
SET by the DRIVER to abort command processing |
Avvio |
4 |
0Ch |
SET by the DRIVER per indicare che un comando è disponibile per l'elaborazione. |
Controllo Interrupt |
8 |
10h |
Riservato. (DEVE essere zero). |
Dimensioni comando |
4 |
18h |
Dimensioni del buffer dei comandi |
Comando |
8 |
1Ch |
Questo campo contiene l'indirizzo fisico del buffer dei comandi. Si noti che il buffer dei comandi effettivo (non l'indirizzo fisico del buffer dei comandi) è in formato big-endian come imposto da TCG. |
Dimensioni della risposta |
4 |
24 ore |
Dimensioni del buffer di risposta |
Risposta |
8 |
28h |
Questo campo contiene l'indirizzo fisico del buffer di risposta. Si noti che il buffer di risposta effettivo (non l'indirizzo fisico del buffer di risposta) è in formato big-endian come previsto dal TCG. |
Il driver TPM 2.0 legge le informazioni seguenti una volta durante l'inizializzazione del sistema operativo:
Indirizzo fisico dell'area di controllo
Dimensioni del buffer dei comandi
Posizione fisica del buffer dei comandi
Dimensioni del buffer di risposta
Posizione fisica del buffer di risposta
Per i sistemi che usano l'area di controllo (ad esempio, il valore del metodo Start non è uguale a 6) e supportano l'ibernazione e la ripresa, i cinque valori precedenti devono rimanere costanti tra i cicli di ibernazione e ripresa.
4.4.1.1 Errore
Il dispositivo TPM 2.0 può IMPOSTARE questo stato. Può scrivere questo stato solo quando Start è SET. Subito dopo il dispositivo TPM 2.0 imposta questo stato, CLEARs il valore Start. Il driver Windows TPM 2.0 non leggerà il campo Errore a meno che il campo Start non sia CLEAR.
Un valore SET del campo Errore viene considerato come errore generico del dispositivo TPM 2.0 o dell'interfaccia hardware. Qualsiasi valore SET comporta l'annullamento del comando corrente. Il comando DEVE essere eseguito il rollback, quindi il dispositivo TPM 2.0 viene lasciato in uno stato coerente.
Per un dispositivo con un metodo ACPI Start, questo campo deve essere utilizzato solo per gli errori per i quali non è possibile specificare un codice di risposta. Un esempio è: il buffer di risposta non è in memoria fisica. Il driver Windows TPM 2.0 può smettere di usare il dispositivo TPM 2.0 quando questo campo è IMPOSTATO.
Il valore iniziale per questo campo dopo ExitBootServices DEVE riflettere se il dispositivo funziona o meno.
4.4.1.2 Annulla
Il driver Windows TPM 2.0 può IMPOSTARE questo campo per richiedere che l'elaborazione del dispositivo TPM 2.0 del comando corrente venga terminata. Il driver Windows TPM 2.0 non richiama il metodo Start per avviare l'elaborazione della richiesta di annullamento.
Quando Cancel è IMPOSTATO dal driver Windows TPM 2.0 e il dispositivo TPM 2.0 sta elaborando un comando, il dispositivo TPM 2.0 interromperà l'elaborazione del comando corrente al primo punto pratico. Per la maggior parte dei comandi, è previsto che il dispositivo TPM 2.0 completi il comando e fornisca una risposta normale. Per i comandi con esecuzione prolungata (ad esempio, generazione di chiavi RSA), il dispositivo TPM 2.0 può uscire con TPM_RC_CANCELLED. Il dispositivo TPM 2.0 deve completare o annullare il comando entro 90 secondi. In genere la maggior parte dei comandi TPM 2.0 deve essere completata in meno di 500 ms, ad eccezione dei comandi di generazione della chiave RSA che potrebbero richiedere più tempo e l'annullamento dei comandi dovrebbe verificarsi entro 200 ms.
Il driver Windows TPM 2.0 può cancellare questo valore quando il campo Start è CLEAR. Il valore iniziale per questo campo dopo ExitBootServices DEVE essere CLEAR.
4.4.1.3 Inizio
Il driver Windows TPM 2.0 può IMPOSTARE questo stato per indicare che è stato inserito un nuovo comando nel buffer dei comandi. Il driver Windows TPM 2.0 può richiamare il metodo Start per avviare l'elaborazione del comando. Il dispositivo TPM 2.0 cancella questo stato al termine dell'elaborazione di un comando.
Il driver Windows TPM 2.0 può cancellare questo stato quando la chiamata al metodo Start non è riuscita.
Il valore iniziale per questo campo dopo ExitBootServices DEVE essere CLEAR.
Comando 4.4.1.4
Questo è l'indirizzo fisico in cui il driver Windows TPM 2.0 scriverà il comando da eseguire. Il driver Windows TPM 2.0 non scriverà mai un comando maggiore di "Dimensioni comando".
Il driver Windows TPM 2.0 NON DEVE scrivere in questa area di memoria a meno che il campo Start non sia CLEAR. Si noti che l'indirizzo viene specificato in formato little-endian nell'area di controllo, ma il buffer dei comandi effettivo è in formato big-endian come imposto da TCG.
4.4.1.5 Risposta
Questo è l'indirizzo fisico da cui il driver Windows TPM 2.0 leggerà le risposte dei comandi. Il driver Windows TPM 2.0 non leggerà mai una risposta maggiore di "Dimensioni risposta".
Il driver Windows TPM 2.0 leggerà solo una risposta dopo la modifica del campo Start da SET a CLEAR e Error is CLEAR. Si noti che l'indirizzo viene specificato in formato little-endian nell'area di controllo, ma il buffer di risposta effettivo è in formato big-endian come imposto da TCG.
4.5 Definizione dell'interfaccia dell'area di controllo
Per le piattaforme hardware che usano l'area di controllo come interfaccia TPM 2.0, questa sezione e le informazioni contenute nella sezione 4.4 descrivono l'interazione del driver TPM 2.0 con l'hardware. Un esempio di sistema che usa l'area di controllo è un sistema con un valore del metodo Start pari a 2 nella tabella TPM2.
4.5.1 Combinazioni di stato
La tabella 5 descrive il comportamento previsto per le modifiche apportate dal driver Windows TPM 2.0. Si noti che sono consentite solo alcune combinazioni. Vengono documentate solo le combinazioni e le modifiche consentite. Tutte le altre combinazioni non sono valide. Le modifiche al campo senza azione da parte del driver TPM 2.0 di Windows indica che il dispositivo TPM 2.0 o il metodo ACPI Start ha modificato i campi.
Gli stati contrassegnati con '0' indicano che questo campo è CLEAR. Gli stati contrassegnati con '1' indicano che questo campo è SET. Gli stati contrassegnati con '?' indicano che il valore di questo campo potrebbe essere CLEAR o SET. I campi di stato sono abbreviati con: 'ERR' - Error, 'CCL' - Cancel e 'STR' - Start. Un campo può essere scritto dal driver Windows TPM 2.0 o dall'interfaccia del dispositivo TPM 2.0, descritta in dettaglio nella colonna dell'azione.
|--- |
Stato attuale |
---| |
|--- |
Campo scritto |
---| |
|--- |
Stato successivo |
---| |
Azione eseguita dall'interfaccia del dispositivo TPM 2.0 |
|
# |
ERR |
CCL |
STR |
ERR |
CCL |
STR |
ERR |
CCL |
STR |
|
1 |
0 |
1 |
0 |
- |
0 |
- |
0 |
0 |
0 |
Il driver Windows TPM 2.0 CLEARs il valore Annulla per preparare l'area di controllo per il comando successivo. Il driver Windows TPM 2.0 può cancellare il valore Annulla solo quando START è CLEAR. Il dispositivo TPM 2.0 NON DEVE scrivere nel campo Annulla. |
2 |
0 |
0 |
0 |
- |
- |
1 |
0 |
0 |
1 |
Il driver Windows TPM 2.0 imposta il valore start per indicare che un comando è presente nell'area Comando. Il driver Windows TPM 2.0 può chiamare il metodo ACPI Start per avviare l'esecuzione del comando. Al termine del metodo ACPI Start, il dispositivo TPM 2.0 deve completare i comandi e CANCELLARe il campo Start entro 90 secondi. Il superamento del limite di tempo può causare il blocco del driver TPM 2.0 di Windows. |
3 |
0 |
? |
1 |
- |
- |
0 |
0 |
? |
0 |
Il dispositivo TPM 2.0 CLEARs il campo Start al termine dell'elaborazione del comando o annulla il comando. Se il comando è stato annullato, una risposta con codice restituito TPM_RC_CANCELLED viene inserita nel buffer di risposta e Start è CLEARed. Il driver Windows TPM 2.0 può leggere il buffer di risposta mentre il campo Start è CLEAR. Il driver Windows TPM 2.0 NON DEVE leggere il buffer di risposta mentre il campo Start è IMPOSTATO. |
4 |
0 |
0 |
1 |
- |
1 |
- |
0 |
1 |
1 |
I driver TPM 2.0 di Windows annullano per indicare il dispositivo TPM 2.0 per annullare il comando corrente. In genere, i comandi a esecuzione prolungata devono essere annullati al prossimo punto pratico. I comandi a esecuzione breve possono essere completati. In particolare, il dispositivo TPM 2.0 DEVE CANCELLARe il campo Iniziale entro 90 secondi dopo che il campo Annulla è IMPOSTATO. Un buon obiettivo di prestazioni è di 200 ms invece di 90 secondi. Nota: è possibile che il campo Cancel venga impostato quando viene chiamato il metodo ACPI Start perché un thread all'interno del sistema operativo può IMPOSTARE il campo Cancel prima che un altro thread richiami il metodo ACPI Start. |
5 |
0 |
? |
1 |
1 |
- |
- |
1 |
? |
1 |
Il dispositivo TPM 2.0 indica una condizione di errore nel dispositivo. Lo stato del dispositivo TPM 2.0 è come se l'esecuzione del comando non fosse mai stata avviata. Il driver Windows TPM 2.0 considera questo valore come un errore generico del dispositivo TPM 2.0 e annulla l'elaborazione del comando. |
6 |
1 |
? |
1 |
- |
- |
0 |
1 |
? |
0 |
Il dispositivo TPM 2.0 CLEARs il campo Start immediatamente dopo setting al campo Errore. Il driver Windows TPM 2.0 controlla solo il campo Errore quando il campo Start è CLEAR o se l'esecuzione o l'annullamento dei comandi non si verifica entro l'intervallo di tempo richiesto. Il driver Windows TPM 2.0 può smettere di usare il dispositivo TPM 2.0 quando il campo Errore è IMPOSTATO. |
4.5.2 Diagramma dello stato quando si usa il metodo ACPI Start
Questo diagramma di stato è solo a scopo informativo. La descrizione normativa del comportamento è il testo nelle sezioni precedenti. Se sono presenti transizioni di stato mancanti o ambigue, consultare il testo precedente.
Figura 1: Stati del dispositivo TPM 2.0 quando si usa il metodo ACPI Start
Nota
(a) Si noti che più thread simultanei possono interagire con l'area di controllo simultaneamente. Ad esempio, un thread può avviare un comando impostando il campo Start e quindi eseguendo il metodo Start. Un altro thread può impostare il campo Annulla in parallelo. Di conseguenza, la possibilità di impostare il campo Annulla dopo aver impostato il campo Start, ma prima di emettere il metodo Start. (b) Un driver Windows TPM 2.0 può reagire alle condizioni di errore in modo diverso rispetto a quello illustrato. Potrebbe, ad esempio, passare a uno stato di errore quando si verifica un timeout.
4.5.3 Diagramma dello stato senza un metodo ACPI Start
Questo diagramma di stato è solo a scopo informativo. La descrizione normativa del comportamento è il testo nelle sezioni precedenti. Se sono presenti transizioni di stato mancanti o ambigue, consultare il testo precedente.
Figura 2: Stati del dispositivo TPM 2.0 senza metodo ACPI Start
4.6 Interfaccia di I/O mappata alla memoria
Per le piattaforme hardware che usano l'interfaccia di I/O mappata alla memoria, questa sezione e le informazioni contenute nella sezione 4.4 descrivono l'interazione del driver TPM 2.0 con l'hardware. Un esempio di sistema che usa l'interfaccia di I/O mappata alla memoria è un sistema con un valore del metodo Start pari a 6 nella tabella TPM2.
4.6.1 Requisiti di specifica dell'interfaccia TPM TCG
Il sistema DEVE essere conforme ai requisiti dell'interfaccia hardware TPM 1.2 in [TCG12] per le sezioni seguenti:
Sezione 9.1: Livelli di localizzazione TPM
Sezione 9.2: Usi della località
Sezione 9.3: Utilizzo località per registro
Sezione 10: Spazio di registrazione TPM
Sezione 11: Interazione e flussi di sistema
Tranne: Tutte le sezioni 11.2.4 Modalità errore
Tranne la sezione 11.2.5: Durata comando, elemento normativo 2
Tranne tutte le sezioni 11.2.6: Timeout
Tranne tutte le sezioni 11.2.8: Auto test e inizializzazione della piattaforma
Tranne tutte le sezioni 11.2.9: Dimensioni del buffer di input
Tranne la sezione 11.2.10: errori, elementi normativi 2c e 3.
Sezione 13: Protocollo hardware TPM
Per le future specifiche della bozza di [TCG12] contattare Microsoft.
4.6.2 Supporto per l'annullamento di un comando
Windows richiede che il dispositivo TPM 2.0 consenta l'annullamento di un comando TPM 2.0 usando l'interfaccia I/O mappata alla memoria mostrando il comportamento descritto di seguito.
Il bit precedentemente inutilizzato 24 del registro STS viene definito solo come scrittura e denominato commandCancel.
Una scrittura di '1' al comandoCancel durante la fase di esecuzione del comando PUÒ annullare il comando attualmente in esecuzione e deve essere restituita una risposta. La risposta indica se il comando è stato annullato (nessuna modifica dello stato TPM 2.0, ma viene restituito un TPM_RC_CANCELLED codice di risposta annullato) o completato (viene restituita una risposta TPM 2.0 regolare che indica il risultato del comando). Scrive nel registro commandCancel quando il TPM non è nello stato di esecuzione del comando DEVE essere ignorato.
4.6.3 Requisiti aggiuntivi
Tutti i comandi TPM DEVONO completare entro un massimo di 90 secondi.
Se il driver TPM 2.0 richiede di annullare un comando, deve completare o annullare entro 90 secondi.
I valori TIMEOUT seguenti devono essere implementati: TIMEOUT_A = 1 secondo, TIMEOUT_B = 2 secondi, TIMEOUT_C = 1 secondo, TIMEOUT_D = 1 secondo.
La dimensione minima del buffer di input deve essere 0x500 (o maggiore).
5.0 Riferimenti
[ACPI09] |
"Configurazione avanzata e specifica di Power Interface", versione 4.0, 16 giugno 2009. |
[TCG08] |
Gruppo di calcolo attendibile, "TCG Platform Reset Attack Mitigation Specification", versione 1.0, 15 maggio 2008. |
[TCG11] |
Trusted Computing Group, "TCG Physical Presence Interface Specification", versione 1.20, febbraio 10, 2011. |
[TCG12] |
Trusted Computing Group, "PC Client Work Group PC Client Specific TPM Interface Specification (TIS) versione 1.21, Revisione 1.00. |