Есть, есть. Это фактическое требование Secure Boot. Должен быть корень доверия, как минимум реализующий проверку цифровых подписей микрокода до его загрузки. У АМД это ARM TrustZone.
Нет там требования для SecureBoot, что должен быть Intel ME или аналог.
Есть требование о неприрывной цепочке доверия. Начинается она с модуля, который может прочитать ключи из ROM и верифицировать цифровую подпись далее загружаемых модулей инициализации платформы.
Это даже отдалённо не аналог Intel ME.
Это процессор «сбоку», на котором запущена своя ОС, и который имеет доступ к памяти основной системы. Какая разница между этой хренью и Intel ME?
Я хочу узнать, что написано на твоих карточках. Я прошу тебя взять карточку, посмотреть на ней цифру (не показывать его мне), взять из ящика шар с такой же цифрой и мне показать уже его.
Ты это... когда температура спадёт - пиши. А так лучше пока полежи ещё, отдохни.
В отчете оценочные суждения, специалисты по безопасности никому не известны, фирма основана в 2017 году и 1 день для устранения дыр в безопасности, серьезно? Для spectre и meltdown чуть ли не пол года отсрочки было для смягчение ущерба. Короче fakenews. Хех, а между тем у меня intel :)
Время от времени в DirectX или OpenGL выпадает в зеленый экран (т.е. зависаний нет, звук идет, картинка есть, а вот вместо картинки идет зеленый экран).
Судя по всему, в течение недели мигрирую на онтопик (Fedora), хотя хотел ещё подождать поддержку One by Wacom CTL-672, которая должна подъехать в 4.16.
После покупки хотел потестить в оффтопике (поиграться, по большей части).
Результаты: баги выше (судя по всему, известные, ибо гуглятся по «Ryzen 2400G green screen») + через DVI работать пытается постоянно на частоте 59 Гц (в 3D fullscreen приложениях до 60 даже повысить не позволяет. Пришлось подключить через HDMI, ибо DisplayPort кабель у меня сейчас не под рукой. Но эта зелень дико смущает.
Покупал в связке с MSI B350M Mortar (брал ради DP на материнке): пришлось прошивать через гарантийный отдел + при прошивке почему-то не завелась дискретная карта.
Deleted ()
Последнее исправление: merhalak
(всего
исправлений: 1)
Есть требование о неприрывной цепочке доверия. Начинается она с модуля, который может прочитать ключи из ROM и верифицировать цифровую подпись далее загружаемых модулей инициализации платформы.
Для этого не обязательно иметь ME или аналог.
Это процессор «сбоку», на котором запущена своя ОС, и который имеет доступ к памяти основной системы.
Не факт, что PSP имеет доступ к памяти основной системы. Это только AMD известно. По спецификации взаимодействие основной системы с secure world обеспечивается через специальные средства. Если AMD ничего дополнительно не нагородила, то выполняемый в PSP трешак не может лезть в память и будет работать только с тем, что у себя имеет и что через специальные вызовы получает от основной системы.
Какая разница между этой хренью и Intel ME?
Через Intel ME проходят вообще все данные, которые существуют на компьютере. Даже если их в оперативной памяти нет.
Не факт, что PSP имеет доступ к памяти основной системы. Это только AMD известно. По спецификации взаимодействие основной системы с secure world обеспечивается через специальные средства. Если AMD ничего дополнительно не нагородила, то выполняемый в PSP трешак не может лезть в память и будет работать только с тем, что у себя имеет и что через специальные вызовы получает от основной системы.
По спецификации TrustZone это что-то вроде гипервизора. У него есть контроллер адресного пространства, который помечает регионы памяти как секьюрные (доступные только из secure world) и нормальные (доступные всем). Естественно, это предполагает, что как минимум любой регион памяти может быть помечен как секьюрный, и соответственно, доступен из TEE (чем пользуются некоторые устройства на АРМ - например секрьюрные приложения, декодирующее DRM-контент).
The TrustZone Address Space Controller (TZASC) is an AXI component which partitions its slave address range into a number of memory regions. The TZASC can be programmed by Secure software to configure these regions as Secure or Non-secure, and will reject Non-secure transactions to a region that is configured as Secure. The main reason to use a TZASC is to partition a single AXI slave, such as an off-SoC DRAM, into multiple security domains.
Скорее АМД надо было бы нагородить своих костылей, чтобы отказаться от управления системной памятью из TrustZone, что сомнительно, учитывая, что рекламная фишка эпика - шифрование памяти в обход гипервизора.
На ЛОРе кто-то постил отличное объяснение «на пальцах», как раз для программеров, не особо вдаваясь в железо. Время - примерно конец января-начало февраля, полстраницы отличного текста. Только вряд ли ты его найдешь, т.к. не хочешь искать. Без усилий с твой стороны ничего не получится. Начинай разбираться сам, по-другому никак.
По спецификации TrustZone это что-то вроде гипервизора.
Аппаратный, что важно. Это не значит, что ОС, которая крутится внутри secure world, имеет прямой доступ к остальной памяти.
Скорее АМД надо было бы нагородить своих костылей, чтобы отказаться от управления системной памятью из TrustZone, что сомнительно, учитывая, что рекламная фишка эпика - шифрование памяти в обход гипервизора.
Гораздо проще в сервис, который в ОС ставится, встроить слив данных куда надо.
Нашёл статью с описанием приблизительно как ты мне написал но без карточек и шаров а с описанием доступа к ячейкам. Разобрался.
За счёт использования косвенной адресации в ветвлениях.
Нужно ставить ветвление, чтобы никогда не вызывалась эта часть ветки по алгоритму самой проги.
Собственно как я понял, сам баг в процах именно в том, что при просчёте ветвлений наперёд не идёт проверка на наличие прав доступа к областям памяти.
Конечно метод эдакий себе вероятностный, точность и скорость тыренья зависит от размера кеша, количества уровней кеша. И конечно же нужно совершенно точно знать где лежит то что ты тыришь.
Там не обязательно ветвления. Ветвление нужно для спектра, но мелтдаун строго говоря может работать и без - за счет того, что процессор суперскалярный, и последующие после «неправильной» инструкции уже загружены в пайплайн и выполняются. В случае с интелом, видимо, «незаконный» лоад успевает передать результат зависимым инструкциям в пайплайне, и их успевает отработать несколько штук до того, как выскочит исключение, пайплайн сбросится, а состояние откатится (а заказ на чтение из памяти в кеш уже ушел).
Под ветвлением я имел ввиду организацию цикла. Он всё таки тоже своеобразный условный оператор, либо идём внутрь цикла либо перепрыгнули и побежали дальше.
Я так понимаю что мы вначале тренируем предсказатель веивления на куче сработавших вхождениях в цикл, а потом суём «неправильное» условие, которое по предсказанию всё равно отрабатывается, а тут хлоп и у нас уже и данные в кеше. После крутим другой цикл в котором листаем, наш массив и смотрим по какому адресу быстрее считывается.
Тут правда всё совсем не гладко. На сильно нагруженных системах нужно сильно попотеть чтобы собрать убедительную статистику для того чтобы быть уверенным что таки правильно считали байтик.
К тому же в процессорах например в i486 кеш первого уровня (там вроде других и небыло) имел минимальную строку записи в кеш 16 байт вроде. Как в современных я не знаю, может и больше. Этот факт тоже снижает качество и скорость вынюхивания данных.
Не совсем. Скорее аппаратно-программный, что является его главной маркетинговой фишкой - в случае с ARM secure world и normal world могут крутиться на одном физическом ядре. Этакий фреймворк для программной реализации TPM плюс всего, чего сможет придумать заказчик.
Это не значит, что ОС, которая крутится внутри secure world, имеет прямой доступ к остальной памяти.
В общем и целом, наверное, не значит (ну т.е. задавшись целью можно было бы так сделать).
И тут у нас есть 2 подхода - параноидально-шизофренический и гиперактивно-понирадужный. Первый подразумевает, что АМД является коммерческой организацией, ARM является коммерческой организацией, TrustZone является продуктом, существующие реализации TrustZone в коммерческих процессорах, о работе которых мы знаем больше, чем о PSP, имеют доступ к системной памяти.
В рамках этого подхода следует считать, что в теории PSP может читать вашу память.
Второй подразумевает, что АМД и АРМ сплясали с бубнами и из общечеловеческих гуманистических побуждений запилили специальный TrustZone по-красному, намеренно функционально урезанный (несмотря на все плюшки, которые можно было бы получить), огороженный от всего, до чего можно дотянуться.
Каким бы АМД-фанбоем я ни был, но в первую очередь я параноик, и только во вторую - розовый пони.
Я так понимаю что мы вначале тренируем предсказатель веивления на куче сработавших вхождениях в цикл, а потом суём «неправильное» условие, которое по предсказанию всё равно отрабатывается, а тут хлоп и у нас уже и данные в кеше.
Это spectre v1
Meltdown похож, но там не используется предсказания ветвления, а происходит гонка внутри пайплайна между последовательными зависимыми(!) инструкциями. Цикл в эталонной реализации тоже есть, но он нужен в силу того, что победитель в гонке не гарантирован.
К тому же в процессорах например в i486 кеш первого уровня (там вроде других и небыло) имел минимальную строку записи в кеш 16 байт вроде. Как в современных я не знаю, может и больше. Этот факт тоже снижает качество и скорость вынюхивания данных.
Ну они и читают память (не секретные значения, а массив) не с побайтовым, а с постраничным смещением. В общем и целом с учетом всех ньюансов скорость там была порядка полмегабайта в секунду.
о там не используется предсказания ветвления, а происходит гонка внутри пайплайна между последовательными зависимыми(!) инструкциями
Не совсем понял.
Проге ведь как-то нужно обмануть проц и заставить его выполнить спекулятивно код, который по алгоритму в принципе не исполняется в проге, потому как прога засегфолтится и её операционка снесёт из памяти не дав «понюхать» байты. Разве это делается не условными переходами(ветвлением)?
Теперь меня уже интересует вопрос, как точно установить местоположение того что хотим считать?
Тупо сканировать всё доступное пространство на наличие паттернов характерных для того места откуда нужно стырить инфу?
Проге ведь как-то нужно обмануть проц и заставить его выполнить спекулятивно код, который по алгоритму в принципе не исполняется в проге, потому как прога засегфолтится и её операционка снесёт из памяти не дав «понюхать» байты. Разве это делается не условными переходами(ветвлением)?
Вопрос в определении «выполнить», поскольку выполнение инструкции с точки зрения микроархитекуры это довольно сложный и длинный процесс - нужно взять пригоршню инструкций, декодировать их в микроопсы, микроопсы разных инструкций перемешать, чтобы оптимально распределить их по портам исполнения и порядку зависимости друг от друга, результаты собрать и передать следующим микроопсам в очереди, легальность проверить, по результатам проверки возможно откатить произведенные изменения и очистить конвейр.
Я сам не очень понимаю. Ну т.е. я в принципе понимаю, почему могут завершиться (с последующим откатом) несколько независимых инструкций, «экранированных» нелегальной, но вот каким образом устроен конвейр интелов, что между выполнением и завершением лоада достаточно времени, чтобы успеть сделать зависимый от его результата шифт и поставить на выполнение зависимый от результата шифта лоад - это надо спрашивать специалистов по микроархитектурам суперскалярных процессоров, как именно внутри микроархитектуры определяется легальность лоада, потому что если бы она была известна сразу по результату выполнения, то конвейр по-идее должен был бы быть очищен до постановки на выполнение зависимых инструкций. По какой-то причине проверка легальности инструкции сильно запаздывает по сравнению с передачей результата уже декодированным и распланированным зависимым инструкциям.
Близжайшие полгода лучше посижу на оффтопике. Даже с багом с зеленым экраном это не страшно.
На онтопике (федора): вяленая сессия загружаться не хочет (зависает на логин скрине gdm намертво), с WaylandEnable=false работает кое-как, подтормаживая в интерфейсе gnome shell. Кроме того, система грузится через раз, зависая на экране plumorth.
Deleted ()
Последнее исправление: merhalak
(всего
исправлений: 1)
8400? Да я бы тоже купил, интеловская виртуализация помогла бы эмулятор андроида гонять. Но увы, слишком дорогущие материнки. А брать материнку по цене самого CPU считаю нерациональным решением для себя.
«Империя наносит ответный удар» (ц)
За Штеудом ЦРУ, АНБ, Трёхсторонняя комиссия, Бильдербергский клуб с кучей проплаченных шестёрок. Они своих не бросают.
ЗЫ Я тут «Дюну» взялся перечитывать. Очень аутентичненько =)
Развлекаюсь тем, что придерживаю за фаберже любителей и профессионалов киберпартизанщины и поймал себя на мысли, что где-то всё это уже видел. Мастера киберпанка описали задолго до.
Психологи, кстати, тоже.
В свете событий на железячном фронте как бы всё логично. Проблема в том, что выбирать особенно не из чего.
Кстате, виртуализация есть в коре дуба. Не во всех камнях, ессна. Жду, когда появиться свободная деньга для апгрейда своего боевого асера. Покупать новый комп для эмулятора андроида — это слишком жЫрно.
I've tried out the Linux 4.15.4 stable kernel, Linux 4.16 Git, and Alex Deucher's 4.17 work-in-progress AMDGPU development branch. With all of those different kernels, the system often gets stuck at boot with varying behavior: either no display at all but can SSH in only to find nothing helpful from the dmesg output, a hard hang with no ability to SSH into the system. When trying the APUs back in the MSI X370 XPOWER GAMING TITANIUM board, it's back to working albeit with the spotty support. But when I do get lucky and hit the desktop, when engaging in common OpenGL/Vulkan Linux games, hangs are still an issue.
Важно вот это:
the system often gets stuck at boot with varying behavior
Так что хз-хз, как пользоваться этим под онтопиком.