31
Никольский Алексей Валерьевич

NeoQUEST: Tpm.txt.на что способно заморское железо

Embed Size (px)

DESCRIPTION

Presentation from NeoQUEST Conference about TPM and TXT technologies.

Citation preview

Page 1: NeoQUEST: Tpm.txt.на что способно заморское железо

Никольский Алексей Валерьевич

Page 2: NeoQUEST: Tpm.txt.на что способно заморское железо

2

VT-xVT-d

AES-NI

vPro

TPMAMT

TXT IPT

Page 3: NeoQUEST: Tpm.txt.на что способно заморское железо

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)

Page 4: NeoQUEST: Tpm.txt.на что способно заморское железо

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"

);

Page 5: NeoQUEST: Tpm.txt.на что способно заморское железо

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

Page 6: NeoQUEST: Tpm.txt.на что способно заморское железо

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

Page 7: NeoQUEST: Tpm.txt.на что способно заморское железо

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 стр.

Page 8: NeoQUEST: Tpm.txt.на что способно заморское железо

8

AES-NI TPM TXT

TPM

Хранилище ключей

Временное

Временные ключи

Контроль целостности

Постоянное

Собственный секрет

Пользовательский секрет

Крипто-ускоритель

Крипто-процессор

Генератор случайных чисел

Генератор ключей (RSA)

Устройство хэширования (SHA-1)

RSA подпись/шифрование

Page 9: NeoQUEST: Tpm.txt.на что способно заморское железо

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

Page 10: NeoQUEST: Tpm.txt.на что способно заморское железо

10

AES-NI TPM TXT

TPM

Управление состоянием

Хранилище ключей

Криптография

Протоколы авторизации

Таймер/Счетчик

Контроль целостности

Page 11: NeoQUEST: Tpm.txt.на что способно заморское железо

11

AES-NI TPM TXT

Включение питания

TPM_Init

TPM_Startup

Самотестирование

Использование

TPM_SaveState

Выключение питания

BIOS

BIOS

Чипсет

Программное

обеспечение

Page 12: NeoQUEST: Tpm.txt.на что способно заморское железо

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

Page 13: NeoQUEST: Tpm.txt.на что способно заморское железо

13

AES-NI TPM TXT

TPM

EK

SRK

AuthSecret

RSA key slot

Handles

PCR

Page 14: NeoQUEST: Tpm.txt.на что способно заморское железо

14

AES-NI TPM TXT

Owner

Auth

SecretTPM

TPM_TakeOwnership

SRK

Создает

Page 15: NeoQUEST: Tpm.txt.на что способно заморское железо

15

AES-NI TPM TXT

Owner

Auth

Secret

TPM

NewKey

SRK

NewKey

Blob

Вычисляет

Возвращает

Page 16: NeoQUEST: Tpm.txt.на что способно заморское железо

16

AES-NI TPM TXT

Owner

Auth

Secret

TPM

NewKey

SRK

NewKey

Blob

NewKey

Handle

Сохраняется

Ассоциирует

Возвращает

Page 17: NeoQUEST: Tpm.txt.на что способно заморское железо

17

AES-NI TPM TXT

TPM

PCR_#x

Обнуляет

PC

R[x

]

0

Reset/Startup

•Обнуление

Extend

•Добавление данных

Read/Seal

•Использование

Page 18: NeoQUEST: Tpm.txt.на что способно заморское железо

18

AES-NI TPM TXT

TPM

PCR_#x

Обнуляет

PC

R[x

]

0

Reset/Startup

•Обнуление

Extend

•Добавление данных

Read/Seal

•Использование

Данные (D)

Page 19: NeoQUEST: Tpm.txt.на что способно заморское железо

19

AES-NI TPM TXT

TPM

PCR_#x

Использует

Reset/Startup

•Обнуление

Extend

•Добавление данных

Read/Seal

•Использование

Page 20: NeoQUEST: Tpm.txt.на что способно заморское железо

20

AES-NI TPM TXT

TPM

TPM_Seal(x)

PCR_#x

Key handle

(EK/Other)

Data Blob

NewKey

Data

Использует

Вычисляет

Возвращает

Seal

• Шифрование

Unseal

• Расшифровывание

Page 21: NeoQUEST: Tpm.txt.на что способно заморское железо

21

AES-NI TPM TXT

TPM

TPM_Unseal(x)

PCR_#x

Key handle

(EK/Other)

NewKey

Data

Использует

Вычисляет

Возвращает

Data Blob

Seal

• Шифрование

Unseal

• Расшифровывание

Page 22: NeoQUEST: Tpm.txt.на что способно заморское железо

22

AES-NI TPM TXT

On Enabled Active Owned

Off Disabled Inactive Unowned

Нельзя

использовать

ресурсы TPM

Но можно

Random/SHA-1

То же что

Disabled, но

можно

TakeOwnership

Можно использовать

дополнительные

команды с ключем SRK

Включен

дополнительный

контроль команд

Можно

использовать все

основные

команды, в

частности PCR

Нельзя использовать

команды,

использующие

персональный ключ

Позволяет сперва

авторизоваться,

а потом включить

TPM

Питание

отсутствует

Можно

использовать

ресурсы TPM

Питание

подключено

Page 23: NeoQUEST: Tpm.txt.на что способно заморское железо

23

AES-NI TPM TXT

Требующие авторизации

(Owned)

Требующие ресурсы

Не требующие

ничего

Контроль доступа к командам:

On

Owned

+

Activated

Activated

No Access

Physical Presence

Owned

Page 24: NeoQUEST: Tpm.txt.на что способно заморское железо

24

AES-NI TPM TXT

•BIOS

•Драйвер TPM

•Библиотеки и утилиты для работы с TPM

bash

Tpm-tools

/dev/char/tpm

TPM device

Page 25: NeoQUEST: Tpm.txt.на что способно заморское железо

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

Page 26: NeoQUEST: Tpm.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

Ключ

шифрования

Использует

Page 27: NeoQUEST: Tpm.txt.на что способно заморское железо

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]);

Page 28: NeoQUEST: Tpm.txt.на что способно заморское железо

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)

Page 29: NeoQUEST: Tpm.txt.на что способно заморское железо

29

AES-NI TPM TXT

BIOS ROM

BIOS Code

MBR Loader OS Kernel

TPM

PCR

Static Root of trust (SRT)

Page 30: NeoQUEST: Tpm.txt.на что способно заморское железо

30

AES-NI TPM TXT

BIOS ROM

BIOS Code

MBR Loader OS Kernel

Сотни проверок при загрузке - долго

Необходимо обновлять все проверки в случае легальных

модификаций

Как быть, если не совпал код на ранней стадии? Не

загружаться?

Все компоненты доверенные

Возможность удаленной проверки (TPM_Seal с удаленным

Challange)

Page 31: NeoQUEST: Tpm.txt.на что способно заморское железо

31

AES-NI TPM TXT

Intel Trusted Execution Technology (TXT)

AMD Secure Virtual Machines