- PVSM.RU - https://www.pvsm.ru -

AMD EPYC «CryptoNow!»

Разговоры об аппаратной защите пользовательской информации процессорами AMD EPYC начались еще два года назад. Поэтому нельзя сказать, что защита памяти и виртуальных сред, доступная се­го­дня в серверных процессорах AMD с архитектурой Zen, стала полной неожиданностью. На Гиках/Хабре об этом можно прочитать в анонсе EPYC [1], в блоге [2] ESET NOD32 и в гуляющих по интернету пре­зен­та­ци­ях Дэвида Каплана из AMD. Архитектуру подобного рода защит детально описал CodeRush в статье «О безопасности UEFI [3]», за что ему особая благодарность. Это действительно был взгляд в будущее.

Серверная плата ASUS KNPP-D3 с двумя процессорами AMD EPYC 7551 поддерживает технологию Secure Encryption

Серверная плата ASUS KNPP-D3 с двумя процессорами AMD EPYC 7551 в корпусе RS700A-E9-RS4 [4] под­дер­жи­ва­ет набор фирменных технологий криптозащиты от Advanced Micro Devices

Когда появилась возможность нам исследовать системную плату ASUS KNPP-D32 с двумя EPYC 7551, встала задача определиться с особенностями реализованной там криптозащиты. Не в последнюю очередь потому, что сложно представить иное использование такой платформы, кроме как в виде общежития для виртуальных машин. Все это хозяйство, упакованное в 1U стоечный корпус с терабайтом памяти о 64-х процессорных ядрах, – хорошая иллюстрация высокого удельного веса вычислительных возможностей. (При щадящем режиме потребления электроэнергии, кстати сказать).

Click to enlarge

Защита пользовательских данных видится в компании AMD как триединая задача, состоящая из шиф­ро­ва­ния памяти (Secure Memory Encryption), шифрования виртуальных сред (Secure Encrypted Vir­tu­a­li­za­tion) и шифрования процессорного контекста (Encrypted State). Второй том документа «AMD64 Architecture Programmer’s Manual» сообщает, что узнать готовность платформы можно выполнив инструкцию CPUID. Ее функция 8000001Fh в регистрах EAX, EBX, ECX и EDX дает полную картину состояния криптозащиты. Воспользуемся утилитой JavaCrossPlatformCPUID [5].

Click to enlarge

Хотя искомую функцию мы не находим среди закладок, результат ее работы можно увидеть в дампе – регистр EAX содержит 0000000Fh. Стр.534 означенного выше документа позволяет утверждать, что все режимы безопасности на платформе ASUS RS700A-E9 в норме.

Содержимое регистра EAX для функции CPUID 8000001F

Впрочем, можно и не вдаваться в подробности. Аналогичный результат сообщает и AIDA64. Правда, информация о поддержке режима Secure Memory Encryption почему-то недоступна пользователям этой программы – еще один аргумент в пользу непосредственной диагностики через функции CPUID.

Click to enlarge


Теперь облачные сервисы просто обязаны гарантировать жителям коммуналки, что их виртуальные машины пол­но­стью изолированы друг от друга, а равно и от пытливого ока хост-платформы. Кстати, оптимисты могут и не шифровать свои гостевые задачи: наряду с зашифрованными с мирно уживаются и незашифрованные виртуалки (до сих пор выбирать не приходилось – нужно было быть «как все»: или-или).

Дело за малым – оценить накладные расходы на криптование: независимо от производительности процессора алгоритмы шифрования всегда создавали и продолжают создавать чувствительные накладные расходы. Сайт techpowerup [6], ссылаясь на AMD, утверждает об увеличении задержки при операциях с памятью на 7-8 нсек, что приводит к снижению производительности по SPECInt на 1,5%.

Ряд источников утверждает, что AMD дает возможность включения и выключения SEV-ES, и это можно сделать в сеансе операционной системы без перезагрузки. Как же видится подсистема криптозащиты и какие рычаги воздействия на нее доступны пользователю?

Click to enlarge


В Windows Server 2016 диспетчер устройств предоставляет информацию о двух наборах устройств – AMD K17 Platform Security Processor 3.0 (Device ID = 1456h) и AMD Cryptographic Coprocessor (Device ID = 1468h). Поскольку в каждом сокете работает по четыре процессорных ноды, всего в системе об­на­ру­жи­ва­ет­ся восемь PSP и CCP. Операционная система не сообщает ничего о ресурсах этих процессоров. Известно, впрочем, что они подключены к шине PCI Express в режиме полной разрядности (x16).

Click to enlarge


Хотя PSP/CCP программно-недоступны, их можно отключить, запретив в диспетчере устройств. Можно даже отключить ведущий к ним AMD PCI-линк (для PSP – это шины с ID = 145Ah, для CCP – шины с ID = 1455h), либо отключить мосты AMD K17 Internal PCIe General Purpose Ports (GPP). Их в системе 16 штук для обеспечения трафика между нодами и уполномоченными крипто(со)процессорами. Что, впрочем, никак не отражается на производительности платформы, если судить по Cinebench R15. Разброс результатов в диапазоне 4700…5100 в зависимости от фаз Луны сводит на нет сам процесс сбора метрик.

Автор: IC Book Labs

Источник [7]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/amd/266939

Ссылки в тексте:

[1] анонсе EPYC: https://geektimes.ru/post/290303/

[2] блоге: https://habrahabr.ru/company/eset/blog/308968/

[3] О безопасности UEFI: https://habrahabr.ru/post/268423/

[4] RS700A-E9-RS4: https://www.asus.com/ae-en/Commercial-Servers-Workstations/RS700A-E9-RS4/

[5] JavaCrossPlatformCPUID: https://github.com/manusov/JavaCrossPlatformCPUID

[6] techpowerup: https://www.techpowerup.com/reviews/AMD/Epyc_Server_Architecture/3.html

[7] Источник: https://geektimes.ru/post/294851/