Комментарии 36
Кажется, что от пользователя код защитить невозможно в принципе.
На консолях и телефонах вот защитили. У xbox one вон до сих пор нет ниодного публичного взлома. Если код подписан, то ничего там не поменяешь. А если еще и шифрован, то и эмулятор не поможет.
всем роздан открытый ключ этой пары
Если действительно всем, то это атас. Потому что, как уже ниже написали, начнется нашествие вирусов, с которыми ничего не сможет сделать ни один антивирус.
Интел придумает ещё одну более новую инструкцию, чтобы бороться с вирусами, использующими эту инструкцию и утекший ключ. А пока все не внедрили эту новую инструкцию, вот вам новая партия процессоров, с другим ключём. Покупайте пожалуйста.
Весь этот страшный сон я уже где-то видел.
Рассказ Tony Chen (Microsoft) (development lead responsible for Xbox One security) о защитах в Xbox one — https://www.youtube.com/watch?v=U7VwtOrwceo "Guarding Against Physical Attacks: The Xbox One Story", Platform Security Summit, 2019-10-21
We will first describe the Xbox security design goals and why it needs to guard against hardware attacks, followed by descriptions of the hardware and software architecture to keep the Xbox secure. This includes details about the custom SoC we built with AMD and how we addressed the fact that all data read from flash, the hard drive, and even DRAM cannot be trusted. We will also discuss the corresponding software changes we made to keep the system and the games secure.
Ни к коду, ни к стеку, ни к данным из других программ получить доступ нельзя (на самом деле есть дыры, но это детали конкретных реализаций, которые исследовали, в принципе, довольно суровая защита).
Соответственно удалённая сторона может определить, что у пользователя нужная ОС, что она не пропатчена, версии биоса, что загруженная программа совпадает с эталонной, что в памяти нет инжектированного кода и т. п.
Про "ОС, которую контролирует пользователь": может он её и контролирует, только вот она не может контролировать многие вещи на железном уровне. Те же ME, PSP, TrustZone, которые сами являются ОС и имеют доступ абсолютно ко всему в обход гостевой "пользовательской" ОС. Ну а шифрование памяти это как изюминка на торте всех этих ME и TtustZone. Хотя уже сейчас пользователь может хранить и проигрывать DRM-видео, при этом даже ядро не может получить доступ к памяти где хранятся разжатые и расшифрованные видео фреймы. Но при этом андроид может, к примеру, рисовать элементы управления поверх видео.
Стесняюсь спросить: а какая прямая сторона? Зачем на пользовательской машине шифрование данных в оперативной памяти, да и на сервере тоже. Кроме особо защищённых токенов или какого-нибудь хитрого DRM вообще не вижу применения, это же не бесплатные вычислительных мощности — да и энергопотребление с теплопакетом не следует забывать. Ну ещё военные и госзаказ, но это совсем другая история.
1. Сколько вообще взломов (ну хотя бы примерно, а?) было сделано с использованием дыр на таком низком уровне?
2. Кто-нибудь вообще думает о производительности? Читаем:
«Шифрование по алгоритму AES-XTS-128 выполняет движок AES-XTS, который физически находится около шины памяти.»
Даже DDR3 это десятки гигабайт в секунду. Даже допуская, что «движок» это некий ASIC (ну или что, например?), всё равно какую-то задержку это да принесёт.
Даже DDR3 это десятки гигабайт в секунду. Даже допуская, что «движок» это некий ASIC (ну или что, например?), всё равно какую-то задержку это да принесёт.
Пренебрежимую? Ваш второй вопрос заинтересовал, попробую грубо прикинуть. В их доках на AES-XTS engine написано, что производительность 18 Гбит/с на частоте 3.2 ГГц (это не слишком много, сейчас ядра aes для плис умеют 100-400 Гбит/с на скромных частотах до 400 МГц). Далее, на шифрование 128-битного блока данных AES-ом надо порядка 30-50 тактов, при этом если задействована конвейеризация (режим вроде позволяет, зависимостей сходу не увидел), тогда за эти 30-50 тактов можно обработать несколько блоков по 128 бит. Итого, на обработку одного блока уйдет порядка 50*(1/3.2 ГГц) = 15.7 нс. С режимом XTS особо не знаком, судя по кратким описаниям, он позволяет работу с произвольными блоками без расшифровки всей страницы памяти. Мне кажется, эти задержки во-первых сопоставимы с задержками выборки данных из DDR, во-вторых, могут быть замаскированы конвейеризацией контроллером памяти и контроллером кэша. Но поправьте, если не прав, мне тоже интересно.
То есть такая память в среднем будет в два раза медленнее по таймингам.
Да и вообще… маскировка аппаратной виртуализации? (А кстати, а её можно замаскировать? Ну например сделать так, чтобы все данные и код гипервизора, и вообще его присутствие, никак не отражалось в физической памяти (если гипервизор сам не хочет ничего менять)? В принципе, один мегабайт кэша из четырёх не очень заметно будет, если будет отсутствовать… ну то есть если гипервизор будет полностью находится в «кэше» процессора ...) А вот если гипервизор большой — то зашифровать физическую память — самое то для его маскировки.
любое вычислительное устройство как услуга — к этому всё идёт. Хотите исполнять свой код — делайте своё устройство, а на выданном Вам гаджете извольте исполнять только зашифрованный оговоренный в "ограниченной лицензии на исполнение кода" код в рамках потребляемой услуги. Эпоха универсальных вычислительных устройств под названием "персональный компьютер" постепенно, но неотвратимо уходит. Наступает эра максимально персонализированных абонентских устройств, включённых в единый административный домен с раздачей жестко определённых прав. Тут и IP v6 во всей красе раскроется и шифрование и медицинские достижения по имплантации подтянутся.
Сорри за многАбукв — я так вижу :)
Аппаратное шифрование DRAM уже близко. Чем оно грозит простым пользователям?