Активация аппаратных “закладок” в вычислительных системах
Аппаратные “закладки” – это такие элементы в микроэлектронных схемах, которые позволяют нештатно вмешиваться в работу вычислительной системы, например, выводить её из строя. То есть, активировал вредитель “закладку” – процессор сгорел, важное изделие неработоспособно. Я писал про такие “жучки” в давней заметке. Возможность наличия таких “закладок” – как раз является причиной для того, чтобы иметь собственный цикл производства микроэлектронных схем для военных применений.
Разовьём тему (направление развития, собственно, указано в упомянутой заметке). Вот, распространено мнение, что если вычислительная система, например, комплекса ПВО, “не подключена к другим сетям”, то активировать аппаратную закладку практически невозможно. Вообще, это довольно старая идея, являющаяся развитием взгляда продвинутого пользователя ПК: если компьютер к Интернету не подключен, то и вирус на него проникнуть не сможет (или что-то в подобном стиле). Действительно, на “изолированную систему” извне ничего попасть не может, а значит и закладку, как бы, не активировать. Однако в реальности всё по другому.
Судите сами. Обдумывая реальную ситуацию с комплексом ПВО (возьмём такой “аппарат” для примера) нужно иметь в виду, что это не изолированный ПК, а система, вполне себе работающая с данными, поступающими из внешнего мира. Конечно, так как система довольно сложная, многослойная, то фундаментальные свойства могут скрыться из области внимания. Тем не менее, комплекс ПВО – он просто в существенной мере управляется электромагнитными импульсами (если хотите – ЭМ-полями), поступающими извне. И важная часть этих импульсов – как раз поступает со стороны потенциального вредителя. Если эти импульсы строго игнорировать, не обрабатывать, то и комплекс оказывается бесполезен, по, думаю, понятным причинам. (Даже “отстройка от помех” – это тоже обработка принимаемых из эфира “чужих” сигналов, которые сперва нужно детектировать, “расфильтровать”, проанализировать; и только потом – не “обращать внимания”.) Так что “изолированные системы” – тут просто бесполезны.
Теперь взглянем на то, как разрабатывается специальное программное обеспечение для, гипотетически, комплекса ПВО. Программисты тут обучались по всем известным хорошим книгам (и это правильно, так как знание теории – основа всего в программировании). Для решения рутинных задач используются столь же “рутинные” алгоритмы.
Вот, например, есть такой фильтр Калмана, который даёт в руки разработчика системы наблюдения инструмент оценки вероятной траектории движения цели (если заданы некоторые ограничения на динамические характеристики движения цели). Программные реализации этого фильтра – давно и хорошо изучены, алгоритмы понятны. Фильтр широко используется на практике и для аналитика не будет архисложным предсказать в деталях, как именно данный фильтр реализован в конкретной вычислительной системе. Оказывается, это первый шаг к активации закладки, которая, понятно, встроена в аппаратуру комплекса ПВО (потому что микроэлектронные компоненты закупались “где-то не там”).
Теперь делаем второй шаг. Понятно, что у аналитика, нанятого вредителями, есть подробная документация, рассказывающая и о логике работы микроэлектронных устройств, которые установлены в атакуемом комплексе, и, что не менее важно, о логике работы “закладки”. Последняя, скажем, активируется после того, как микропроцессор-носитель прочитал из памяти (увидел “на шине”), некоторую ключевую последовательность байтов. Очевидно, что реализации фильтра Калмана как раз используют последовательности байтов (ну так этот фильтр программируют), которые напрямую связаны с наблюдаемыми параметрами движения цели. И вот эти параметры-то не менее прямым образом поступают из внешней среды, со стороны “потенциальных вредителей” – их принимает радар, наблюдающий цели.
Вопрос в том, насколько же реально для практики так сформировать передаваемые в сторону радара комплекса ПВО активные помехи, чтобы реализация фильтра Калмана, сопровождая ложную цель, наткнулась на ключевую последовательность байтов в памяти (куски которой, понятно, сформировали другие фрагменты кода и другие устройства, измеряющие скорость, “приводящие координаты” и т.п.). Учитывая, что можно помехопостановщиком быстро перебирать много вариантов, и атаковать не только фильтр Калмана (взятый здесь лишь в качестве утрированного примера), то благоприятный для вредителя исход атаки не кажется невероятным.
Адрес записки: https://dxdt.ru/2010/01/26/2919/
Похожие записки:
- Цвета реки Колорадо
- Вывод полей ECH на tls13.1d.pw
- Буквы кучей и манускрипты
- ИИ с превышением
- Пресертификаты в Certificate Transparency
- ML-KEM на тестовом сервере TLS
- Занятный замок Fichet 787
- Из практики: домашняя 3D-печать
- Ретроспектива заметок: программный код из "реальности" в "виртуальности"
- CVE-2024-3094 про бэкдор в liblzma и теория ИБ
- Согласование траекторий автомобилей-роботов
Комментарии читателей блога: 17
1. 26th January 2010, 22:22 // Читатель Shimuuar написал:
На мой взгляд любые попытки использовать какую-то последовательность байт для включения закладки безнадёжны. Слишком много факторов неподконтрольных вредителю: программист относительно свободен в формате представления данных, компилятор в том какой машкод генерировать. Основная проблема ? случайные срабатывания, закладка должна не только сработать когда надо, но и не срабатывать, когда не надо чтобы её не обнаружили.
На мой взгляд более перспективно вносить ошибки в операции с плавающей точкой таким образом, чтобы на нормальных данных процессор выдавал верный ответ, а на некоторых патологических ошибался.
Можно вспомнить известный баг в операциях с плавающей точкой в ранних пентиумах, если мне не изменяет память.
2. 26th January 2010, 23:04 // Читатель kaschey написал:
Все мы храним данные в массивах Int32, Single, Double (и почти никогда по другому). Массивы эти, обычно, перебираются последовательно (и загружаются в кеш). Массивы нередко нужны в сортированном виде. Данные часто фильтруются, осредняются и нормируются. Массивы часто суммируются. Математика на всех одна. Данные в программу поступают с внешних источников “как есть” и обрабатываются уже там (иначе зачем вообще программы).
Мое мнение: Если знать бы для чего будет использоваться – сделать не вопрос. Ошибку с плавающими числами в Pentium-ах поймали ведь программно, никто аппаратную часть не анализировал. И тут никто не будет и не обнаружит.
3. 27th January 2010, 00:34 // Читатель RE написал:
>Последняя, скажем, активируется после того, как микропроцессор-носитель прочитал из памяти (увидел ?на шине?), некоторую ключевую последовательность байтов.
Это напоминает поиск вируса по сигнатурам, когда антивирус гребет jpg, torrent, недокаченные dc++ файлы, т.к. в них встречаются (случайно) сигнатуры.
4. 27th January 2010, 05:11 // Читатель aa написал:
Насчет закладок – был недавно делец в сша ( http://www.computerworlduk.com/management/government-law/legislation/news/index.cfm?newsId=17755 ) – покупал китайские чипы, менял маркировку и продавал военным. Не из-за китайского ли происхождения шум подняли?
А про железо – посмотрите что запрещают экспортировать из США, особенно если чип планируется применять для военных целей. google for “3a991.a.1”, http://www.access.gpo.gov/bis/ear/txt/744.txt
http://www.access.gpo.gov/bis/ear/txt/744spir.txt
по организациям, пример – МАИ, Тульский оружейный, РХТУ, Главкосмос, …. – презумпция запрета
5. 27th January 2010, 08:03 // Читатель Сергей написал:
> программист относительно свободен в формате представления данных, компилятор в том какой машкод генерировать.
по для впк проходит сертификацию поэтому программист не может использовать любой удобный для него компилятор – только сертифицированный. компилятор и системные библиотеки “тянут” за собой и код – для каждого api есть свои шаблоны использования. ну и сами программисты – сущности ленивые. изобретать велосипед, чтобы заново его отлаживать они не хотят. поэтому шаблоны в разработке используются достаточно широко.
6. 27th January 2010, 14:45 // Читатель arcman написал:
Таки больше паранойя
7. 27th January 2010, 17:00 // Читатель aa написал:
Подумал про еще один способ протащить информацию внутрь радара.
У нато существует система свой-чужой, сделанная на основе гражданской системы, служащей для опознавания самолетов. Когда истребитель летает в мирное время – он может ответить на запрос позывного без шифрования.
Если радар способен принять радиоволны диапазона, который используется для гражданских запросчиков, то логично, что все передаваемые позывные радаром расшифровываются (раз можно “бесплатно” идентифицировать самолет), например, чтобы увидеть мирные самолеты. Вот тут как раз можно передать “Код активации” закладки, т.к. после декодирования таких сигналов получается обычный текст в ASCII. Если он достаточно длинный (8-12 символов), то хватит для активации закладки
8. 27th January 2010, 17:09 // Читатель aa написал:
См. http://ru.wikipedia.org/wiki/Радиолокационный_ответчик
Понятно, что в военное время все ответчики выключают. Но их декодирование в радаре не выключат, т.к. если самолет себя идентифицирует, то нужно передать полученную информацию пилоту – для решения, мирный это самолет или вражеский, который симулирует ответ мирного.
Вот Натовская система:
http://en.wikipedia.org/wiki/Identification_Friend_or_Foe IFF is still in use by both military and civilian aircraft. Civilian aircraft use modes A, C and S. Mode C which includes barometric pressure altitude information is often used in conjunction with mode A. Mode A is often referred to as mode 3/A due to the similarity to the military mode 3. Mode S is a new civilian mode developed to replace both mode A and C.
9. 27th January 2010, 18:27 // Александр Венедюхин:
Да, очень логичный канал, главное, чтобы можно было использовать длинные строки (делает маловероятным ложное срабатывание).
10. 27th January 2010, 19:25 // Читатель kaschey написал:
GUID – 16 байт, используется всеми как уникальный идентификатор. Не представляю себе осмысленный запрос с данными короче 16-и байт.
11. 27th January 2010, 21:35 // Читатель aa написал:
В iff в старых режимах под идентификатор самолета отводится 12 бит – 4 восьмеричные цифры.
12. 27th January 2010, 21:48 // Читатель Vadim написал:
Хорошая, кстати, задача вырисовывается. Пусть заданы некие аппаратная платформа и программный продукт. Дипломник/аспирант встает в позицию консультанта АНБ и должен выбрать удобный триггер для включения в железо гипотетической аппаратной закладки. Пусть, например, в функции-парсере сетевого протокола, реализуемого заданным программным продуктом под x86, входящий пакет всегда кладется по адресу ecx, а по смещению 0x10 в пакете лежит псевдослучайный sequence number. Тогда хороший годный триггер для аппаратной закладки будет иметь вид, например, [ecx+0x10]==0xEBFACE11. Если попробовать попредлагать подобные триггеры для разных программ под разные аппаратные платформы, думаю, можно обнаружить много интересных закономерностей и сделать много интересных выводов. Скорее всего, будет убедительно доказано, что аппаратные закладки в ширпотребном харде – миф.
13. 28th January 2010, 00:06 // Александр Венедюхин:
Убедительно доказать – вряд ли получится. Потому как в теории-то хорошо видно, как это можно сделать. Вот интересная задача как раз в экспериментальной реализации мифа. Исходные приборы и материалы сейчас не дорогие. (Да и, собственно, реализации уже были.) Но с инженерной прикладной практикой этого дела, тут, да, как я понимаю, не всё ясно.
14. 28th January 2010, 11:34 // Читатель kaschey написал:
“Скорее всего, будет убедительно доказано, что аппаратные закладки в ширпотребном харде ? миф”
Пока “ширпотребный хард” не применяется в военных системах смыла в них особого нет (только попалиться можно).
Как начнут применять, так вмиг приделают, да так модифицируют технологию изготовления железа, что его реально расколупать и проверить нельзя будет.
Кстати, вчера слышал новость, что ВМФ США создет кибервойска. Неспроста это. Полагаю, что в этих войсках про все способы атак подумают, только лазейку оставьте.
15. 28th January 2010, 12:12 // Читатель kaschey написал:
А ещё, я думаю, для своих можно выпускать спец. партии того же железа, только с прожженным каналом закладок. Или программно их обезвреживать. Возможности шире некуда.
16. 28th January 2010, 23:22 // Читатель arcman написал:
Можно придумать много способов усложнить жизнь создателям “закладок”.
Вот например в случае радаров – меры по борьбе с активными помехами одновременно делают трудно применимыми и закладки.
Даже банальная перестройка частоты для каждого последующего зондирующего сигнала уже существенно уменьшает вероятность успешной активации закладки.
17. 4th July 2010, 23:59 // Читатель aa написал:
Придумался еще один вариант закладок. Немного нетипичный, но все же:
Для изготовления микросхем используется легирование полупроводниковой основы примесями. “Потенциальный союзник” может ввести дополнительный этап (еще один проход резист-литография-травление-легирование-отчистка, в существующие десятки таких проходов) в пп/производство, когда у некоторых (единичных!) особо мелких транзисторов легирование затворов будет вестись не стандартными примесями, а короткоживущим (десятки лет) ее изотопом. Через какое-то время изотоп распадется поменяв валентность, что приведет к сбою данного транзистора. Что получаем – данная партия сбис гарантированно сломается через n лет, не важно, была ли она в использовании или на складах. Фон от пикограмм (или меньше??) изотопа не детектируется, на ускоренном старении (для определения времени работы микрухи) данный вариант закладки не будет найден. Минусы – нельзя выключить вовремя, плюсы – не надо пытаться запихнуть управляющий импульс в микруху, экранирование и запасные микрухи (из той же партии) дело не спасут.
Специфические микрухи для закладывания изотопов – высокоскоростные и многоканальные АЦП, DSP.