neoquest: tpm.txt.на что способно заморское железо
DESCRIPTION
Presentation from NeoQUEST Conference about TPM and TXT technologies.TRANSCRIPT
Никольский Алексей Валерьевич
2
VT-xVT-d
AES-NI
vPro
TPMAMT
TXT IPT
3
AES-NI TPM TXT
Инструкция Opcode Описание
AESENC 66 0F 38 DC /r Выполнить один раунд шифрования
AESENCLAST 66 0F 38 DD /r Выполнить последний раунд шифрования
AESDEC 66 0F 38 DE /r Выполнить один раунд расшифрования
AESDECLAST 66 0F 38 DF /r Выполнить последний раунд расшифрования
AESKEYGENASSIST 66 0F 3A DF /r ibПоспособствовать в генерации раундового
ключа
AESIMC 66 0F 38 DB /r Преобразование InvMixColumn для ключа
Intel® Advanced Encryption Standard New Instructions (AES-NI)
4
AES-NI TPM TXT
Позволяет повысить производительность в 7 раз! (проверим…)
Использует 128-битные XMM регистры
AESENC
STATE ← SRC1;
RoundKey ←SRC2;
STATE ← ShiftRows( STATE );
STATE ← SubBytes( STATE );
STATE ← MixColumns( STATE );
DEST[127:0] ←STATE XOR RoundKey;
DEST[VLMAX-1:128] (Unmodified)
AESENC xmm1, xmm2
Данные Ключ __asm__ (
"mov eax %2;"
"movdqa xmm1, [eax];“
"aesenc xmm1, [%1];"
"movdqa [%0], xmm1;"
: "=r"(ctext)
: "r"(key), "r"(ptext)
: "xmm1"
);
5
AES-NI TPM TXT
Intel-lib: https://software.intel.com/en-us/articles/download-the-intel-aesni-sample-library
Botan: http://fossies.org/linux/Botan/src/
Botan
Botan::encrypt _mm_aesXXX_si128
Botan::decrypt _mm_aesXXX_si128
6
AES-NI TPM TXT
https://communities.intel.com/community/itpeernetwork/datastack/blog/2014/
06/18/disrupting-the-data-center-to-create-the-digital-services-economy
7
AES-NI TPM TXT
TPM – Trusted Platform Module
TCPA - Trusted Computing Platform Alliance
HP, IBM, Intel, Microsoft 1999
TCG – Trusted Computing Group
http://www.trustedcomputinggroup.org
>1000 стр.
8
AES-NI TPM TXT
TPM
Хранилище ключей
Временное
Временные ключи
Контроль целостности
Постоянное
Собственный секрет
Пользовательский секрет
Крипто-ускоритель
Крипто-процессор
Генератор случайных чисел
Генератор ключей (RSA)
Устройство хэширования (SHA-1)
RSA подпись/шифрование
9
AES-NI TPM TXT
TPM_Delegate_CreateKeyDelegationTPM_Delegate_CreateOwnerDelegationTPM_InitTPM_StartupTPM_SaveState
TPM_SelfTestFullTPM_ContinueSelfTestTPM_GetTestResultTPM_SetOwnerInstallTPM_OwnerSetDisableTPM_PhysicalEnableTPM_PhysicalDisableTPM_PhysicalSetDeactivatedTPM_SetTempDeactivatedTPM_SetOperatorAuthTPM_TakeOwnershipTPM_OwnerClearTPM_ForceClearTPM_DisableOwnerClearTPM_DisableForceClearTSC_PhysicalPresenceTSC_ResetEstablishmentBitTPM_GetCapabilityTPM_SetCapabilityTPM_GetCapabilityOwnerTPM_GetAuditDigestTPM_GetAuditDigestSignedTPM_SetOrdinalAuditStatus
TPM_FieldUpgradeTPM_SetRedirectionTPM_ResetLockValueTPM_SealTPM_UnsealTPM_UnBindTPM_CreateWrapKeyTPM_LoadKeyTPM_CreateMigrationBlobTPM_ConvertMigrationBlobTPM_AuthorizeMigrationKeyTPM_MigrateKeyTPM_CMK_SetRestrictionsTPM_CMK_ApproveMATPM_CMK_CreateKeyTPM_CMK_CreateTicketTPM_CMK_CreateBlobTPM_CMK_ConvertMigrationTPM_CreateMaintenanceArchiveTPM_LoadMaintenanceArchiveTPM_KillMaintenanceFeatureTPM_LoadManuMaintPubTPM_ReadManuMaintPubTPM_Delegate_LoadOwnerDelegationTPM_Delegate_ReadTableTPM_Delegate_UpdateVerificationTPM_Delegate_VerifyDelegation
TPM_NV_ReadValueTPM_NV_ReadValueAuthTPM_SetOwnerPointerTPM_Delegate_ManageTPM_GetTicksTPM_TickStampBlob
TPM_EstablishTransportTPM_ExecuteTransportTPM_ReleaseTransportSignedTPM_CreateCounterTPM_IncrementCounterTPM_ReadCounterTPM_ReleaseCounterTPM_ReleaseCounterOwnerTPM_DAA_Join
TPM_DAA_SignTPM_EvictKeyTPM_Terminate_HandleTPM_SaveKeyContextTPM_LoadKeyContextTPM_SaveAuthContextTPM_LoadAuthContextTPM_DirWriteAuthTPM_DirReadTPM_ChangeAuthAsymStartTPM_ChangeAuthAsymFinishTPM_ResetTPM_OwnerReadPubekTPM_DisablePubekReadTPM_LoadKeyTPM_GetCapabilitySignedTPM_GetOrdinalAuditStatusTPM_CertifySelfTest
TPM_GetPubKeyTPM_SealxTPM_SHA1Start
TPM_SHA1UpdateTPM_SHA1CompleteTPM_SHA1CompleteExtendTPM_SignTPM_GetRandomTPM_StirRandomTPM_CertifyKeyTPM_CertifyKeyTPM_CreateEndorsementKeyPair
TPM_CreateRevocableEKTPM_RevokeTrustTPM_ReadPubekTPM_OwnerReadInternalPubTPM_MakeIdentityTPM_ActivateIdentityTPM_ExtendTPM_PCRReadTPM_Quote
TPM_PCR_ResetTPM_NV_DefineSpaceTPM_NV_WriteValueTPM_NV_WriteValueAuthTPM_KeyControlOwnerTPM_SaveContextTPM_LoadContextTPM_ChangeAuthTPM_ChangeAuthOwnerTPM_OIAPTPM_OSAPTPM_DSAPTPM_FlushSpecific
10
AES-NI TPM TXT
TPM
Управление состоянием
Хранилище ключей
Криптография
Протоколы авторизации
Таймер/Счетчик
Контроль целостности
11
AES-NI TPM TXT
Включение питания
TPM_Init
TPM_Startup
Самотестирование
Использование
TPM_SaveState
Выключение питания
BIOS
BIOS
Чипсет
Программное
обеспечение
12
AES-NI TPM TXT
Вычислители Постоянное хранилище
Non-Volatile (NV)
Временное хранилище
RSA
SHA-1
HMAC
RNG
EK – Endorsement Key
(2048b)
SRK – Storage Root Key
(2048b)
Owner Auth Secret
(160b)
PCR – Platform
Control Registers
0..15
RSA key Slots 0..9
Temp Handles
13
AES-NI TPM TXT
TPM
EK
SRK
AuthSecret
RSA key slot
Handles
PCR
14
AES-NI TPM TXT
Owner
Auth
SecretTPM
TPM_TakeOwnership
SRK
Создает
15
AES-NI TPM TXT
Owner
Auth
Secret
TPM
NewKey
SRK
NewKey
Blob
Вычисляет
Возвращает
16
AES-NI TPM TXT
Owner
Auth
Secret
TPM
NewKey
SRK
NewKey
Blob
NewKey
Handle
Сохраняется
Ассоциирует
Возвращает
17
AES-NI TPM TXT
TPM
PCR_#x
Обнуляет
PC
R[x
]
0
Reset/Startup
•Обнуление
Extend
•Добавление данных
Read/Seal
•Использование
18
AES-NI TPM TXT
TPM
PCR_#x
Обнуляет
PC
R[x
]
0
Reset/Startup
•Обнуление
Extend
•Добавление данных
Read/Seal
•Использование
Данные (D)
19
AES-NI TPM TXT
TPM
PCR_#x
Использует
Reset/Startup
•Обнуление
Extend
•Добавление данных
Read/Seal
•Использование
20
AES-NI TPM TXT
TPM
TPM_Seal(x)
PCR_#x
Key handle
(EK/Other)
Data Blob
NewKey
Data
Использует
Вычисляет
Возвращает
Seal
• Шифрование
Unseal
• Расшифровывание
21
AES-NI TPM TXT
TPM
TPM_Unseal(x)
PCR_#x
Key handle
(EK/Other)
NewKey
Data
Использует
Вычисляет
Возвращает
Data Blob
Seal
• Шифрование
Unseal
• Расшифровывание
22
AES-NI TPM TXT
On Enabled Active Owned
Off Disabled Inactive Unowned
Нельзя
использовать
ресурсы TPM
Но можно
Random/SHA-1
То же что
Disabled, но
можно
TakeOwnership
Можно использовать
дополнительные
команды с ключем SRK
Включен
дополнительный
контроль команд
Можно
использовать все
основные
команды, в
частности PCR
Нельзя использовать
команды,
использующие
персональный ключ
Позволяет сперва
авторизоваться,
а потом включить
TPM
Питание
отсутствует
Можно
использовать
ресурсы TPM
Питание
подключено
23
AES-NI TPM TXT
Требующие авторизации
(Owned)
Требующие ресурсы
Не требующие
ничего
Контроль доступа к командам:
On
Owned
+
Activated
Activated
No Access
Physical Presence
Owned
24
AES-NI TPM TXT
•BIOS
•Драйвер TPM
•Библиотеки и утилиты для работы с TPM
bash
Tpm-tools
/dev/char/tpm
TPM device
25
AES-NI TPM TXT
sudo modprobe tpm_bios
sudo modprobe tpm
sudo modprobe tpm_tis
sudo tpm_version
sudo tpm_takeownership
sudo tpm_getpubek
sudo cat /sys/class/misc/tpm0/device/pcrr
tpm_sealdata –I test.txt –o blob –p4
tpm_unsealdata –I blob –o text_res.txt
26
AES-NI TPM TXT
PCR Данные
0 BIOS, расширения
1 Конфигурация PCI/Motherboard
2 Настройки BIOS
3 Другие ROM
4 MBR – 1
5 MBR – 2
6 Код событий выхода из Hybernate
7 Данные производителя компьютера
8 NTFS Boot Sector
9 NTFS Boot Block
10 Boot Manager
11 BitLocker Access Control
PIN
Ключ
шифрования
Использует
27
AES-NI TPM TXT
ПриложенияКоманды
TPM
Пакет на отправку
УстройствоTPM
PortIO/MMIO
Пакет на прием
УстройствоTPM
PortIO/MMIOTPM_Seal
TPM_Unseal
TPM_SaveState
TPM_Enable
TPM_Disable
TPM_LoadKey
…
…
BIOS
tpm-seal
Tboot
U8 TPM_REG_ACCESS
U32 TPM_REG_STS
U8 TPM_REG_DATA_FIFO
readb((TPM_LOCALITY_BASE_N(locality) | reg) + i);Writeb((TPM_LOCALITY_BASE_N(locality) | reg) + i, _raw[i]);
28
AES-NI TPM TXT
tboot
Фаза 1
TPM_CreateWrapKey (PIN)
Key.dat
TPM_Seal
MBR -> PCR
Mbr.dat
Botan::encrypt (data.txt)
Фаза 2
TPM_LoadKey(PIN)
TPM_Unseal
Botan::decrypt (data.txt)
29
AES-NI TPM TXT
BIOS ROM
BIOS Code
MBR Loader OS Kernel
TPM
PCR
Static Root of trust (SRT)
30
AES-NI TPM TXT
BIOS ROM
BIOS Code
MBR Loader OS Kernel
Сотни проверок при загрузке - долго
Необходимо обновлять все проверки в случае легальных
модификаций
Как быть, если не совпал код на ранней стадии? Не
загружаться?
Все компоненты доверенные
Возможность удаленной проверки (TPM_Seal с удаленным
Challange)
31
AES-NI TPM TXT
Intel Trusted Execution Technology (TXT)
AMD Secure Virtual Machines