Перейти к содержимому
Chebuya

Аппаратная безопасность в OC

Рекомендуемые сообщения

2 минуты назад, BrightYC сказал:

мы можем проксировать tmpfs и хранить файл который запросил сервер в озу, а настоящую еепрому хранить в tmpfs? и не допускать доступа к реальной tmpfs.

Проксирование tmpfs в память приведёт к другой проблеме, которую воспроизведёт тот же самый трюк, что и с tmpfs.

 

Даём испытуемому задачу заполнить псевдослучайными данными массив близкого к предельному размера, провести с этими данными псевдослучайные манипуляции и сообщить серверу сравнительно короткий ответ. В общем, всё то же самое, что и с tmpfs. Если испытуемый не смог дать ответ, значит отключился в беспамятстве, всё с ним понятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, eu_tomat сказал:

Даём испытуемому задачу заполнить псевдослучайными данными массив близкого к предельному размера, провести с этими данными псевдослучайные манипуляции и сообщить серверу сравнительно короткий ответ. В общем, всё то же самое, что и с tmpfs. Если испытуемый не смог дать ответ, значит отключился в беспамятстве, всё с ним понятно.

Но как понять, когда предел, если сам компьютер, собственно, был подменен? при сборке дрона/робота ставить максимальное количество плашек?
Если с дроном еще более-менее прозрачно, то что делать с роботом, если туда могли всунуть дополнительный диск для хранения данных уже непосредственно в ПЗУ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, BrightYC сказал:

Но как понять, когда предел, если сам компьютер, собственно, был подменен? при сборке дрона/робота ставить максимальное количество плашек?

Да. Если секретность до сих пор оправдана, память не жалеем.

 

2 часа назад, BrightYC сказал:

что делать с роботом, если туда могли всунуть дополнительный диск для хранения данных уже непосредственно в ПЗУ?

А это как раз та самая дыра, про которую я упоминал ранее. Несколько лет назад я рассматривал только замену EEPROM в роботе, но не рассматривал возможности апргейда робота.

 

Но теперь я готов пойти ещё дальше. Цель оправдывает средства.

 

Устанавливаем в робота диск максимально возможного объёма и полностью забиваем его процедурно сгенерированными данными. Во время авторизации запрашиваем чтение из псевдослучайных областей диска и, преобразовав в короткий вид, передаём на сервер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, eu_tomat сказал:

Устанавливаем в робота диск максимально возможного объёма и полностью забиваем его процедурно сгенерированными данными.

Но как поступать, если в дрона/робота вставили интернет-карту? в таком случае можно забивать робота мусорными компонентами для увеличения сложности? (как можно определить уровень процессора внутри окружения? мне кажется, это возможно)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, BrightYC сказал:

Но как поступать, если в дрона/робота вставили интернет-карту?

впрочем, у интернет карты ограниченная скорость ( 40 киб/с), думаю, это можно обыграть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
15 минут назад, BrightYC сказал:

впрочем, у интернет карты ограниченная скорость ( 40 киб/с), думаю, это можно обыграть.

Да. Сетевые и связанные платы также вносят задержку. Какие ещё инструменты остались в распоряжении взломщика?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
27 минут назад, eu_tomat сказал:

Какие ещё инструменты остались в распоряжении взломщика?

Интернет-карта не подойдёт взломщику: её можно пихать в каждого дрона/робота и создавать максимальное число соединений куда угодно.

 

Например, взломщик может прокидывать запросы через свой компьютер, в обход дрона (правда, это будет вызывать дополнительную задержку). Однако, если сервер "хороших" будет учитывать задержку, он не сможет связаться с роботами в 400 блоках и дальше: слотов под связанные карты у компьютеров немного, а беспроводная карта перестанет доставать.

 

Но, по-моему, есть ещё один фокус: данные можно хранить в сообщении для пробуждения у модема/связанной карты. Их тоже надо забивать псевдослучайными данными?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
52 минуты назад, ProgramCrafter сказал:

данные можно хранить в сообщении для пробуждения у модема/связанной карты. Их тоже надо забивать псевдослучайными данными?

Отличный трюк даже вне контекста этой темы. Теперь EEPROM роботов можно расширять с помощью сетевых плат! Мне удалось впихнуть в сетевую плату целый MiB данных! Подозреваю, что это не предел именно для сетевой платы, а ограничением послужили планки памяти.

 

Не ясно, как будить такую плату, т.к. размер передаваемого сообщения ограничен 8 KiB. Можно, наверное, впихнуть дополнительную плату исключительно как носитель информации.

 

Но вернусь к теме.

Исходя из новейших данных, WakeMessage сетевой платы должен быть заполнен трудносжимаемыми данными размером 8 KiB. Можно было бы использовать и больший размер, но как тогда будить уснувших роботов? В этом решении я вижу уязвимость, но она, возможно, не единственная, поэтому я подожду ответного хода лагеря взломщиков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, eu_tomat сказал:

Но вернусь к теме.

Исходя из новейших данных, WakeMessage сетевой платы должен быть заполнен трудносжимаемыми данными размером 8 KiB. Можно было бы использовать и больший размер, но как тогда будить уснувших роботов? В этом решении я вижу уязвимость, но она, возможно, не единственная, поэтому я подожду ответного хода лагеря взломщиков.

Если использовать сетевую плату, то я не уверен, что сервер может просчитать задержку в 1 пакет до сервера злоумышленника, откуда мы просто можем скачать оригинальные данные. Т.к EEPROM весит всего 4 килобайта, по сравнению с интернет-картой, где на открытие сокета тратится 3-4 секунды, сообщение придет практически мгновенно, и это можно списать на лаги сервера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, eu_tomat сказал:

В этом решении я вижу уязвимость

Теперь к сообщению для пробуждения можно добавить код исходного EEPROM и отрезать его при запросе. При этом робот лишается возможности загрузки по сети, но успешно представляется своим.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
14 минуты назад, BrightYC сказал:

сообщение придет практически мгновенно, и это можно списать на лаги сервера.

Ничто не мгновенно. Если нет лагов, то на сервере вся операция запроса и получения ответа длится 3 тика. Ещё 1 тик будет потрачен на чтение из EEPROM. Если испытуемому будет подсказывать сервер, хранящий оригинальный код в оперативной памяти, на операцию будет затрчено 6 тиков вместо ожидаемых 4. Да, разницу в два тика можно списать на лаги, но никто не мешает повторить запрос несколько раз, попутно контролируя наличие лагов на эталонном компьютере.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, ProgramCrafter сказал:

Теперь к сообщению для пробуждения можно добавить код исходного EEPROM и отрезать его при запросе. При этом робот лишается возможности загрузки по сети, но успешно представляется своим.

Логично. Но сервер может специально проверить, способен ли робот пробуждаться по сообщению, специально остановив его.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, eu_tomat сказал:

Логично. Но сервер может специально проверить, способен ли робот пробуждаться по сообщению, специально остановив его.

Не может. Подменить computer.shutdown на свой код, который просто будет отсчитывать время, когда нужно ответить в следующий раз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, BrightYC сказал:

Подменить computer.shutdown на свой код, который просто будет отсчитывать время, когда нужно ответить в следующий раз.

Соглсен. На computer.shutdown полагаться нельзя. Останов по TLWY будет понадёжнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, eu_tomat сказал:

Соглсен. На computer.shutdown полагаться нельзя. Останов по TLWY будет понадёжнее.

каким образом? код обвернут в pcall, а полагаться на то, что упадет сам робот из-за лагов сервера - несколько странно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Новый ход лагеря злоумышленников:

Теперь у злоумышленников вместо робота стоит компьютер с интернет-картой, подключающийся к какому-нибудь эмулятору OC.

После создания соединения он посылает запрос на авторизацию у сервера "хороших", все сетевые пакеты передаёт в эмулятор.

Как контрить этот вариант? Задержка ответа будет весьма незначительной.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, ProgramCrafter сказал:

Новый ход лагеря злоумышленников:

Теперь у злоумышленников вместо робота стоит компьютер с интернет-картой, подключающийся к какому-нибудь эмулятору OC.

После создания соединения он посылает запрос на авторизацию у сервера "хороших", все сетевые пакеты передаёт в эмулятор.

Как контрить этот вариант? Задержка ответа будет весьма незначительной.

тут, мне кажется, кроме как играть задержкой уже не получится. Учитывая, что эмулятор не ограничен по вычислительным мощностям (по сравнению с компьютерами внутри игры, конечно), придумать вряд ли что-то возможно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
23 минуты назад, BrightYC сказал:

каким образом? код обвернут в pcall, а полагаться на то, что упадет сам робот из-за лагов сервера - несколько странно.

Разумеется, код обёрнут в pcall. И упадёт он независимо от лагов. Заворачиваем цикл в pcall и выполняем. А потом ещё раз выполняем. И ещё.

 

25 минут назад, ProgramCrafter сказал:

Теперь у злоумышленников вместо робота стоит компьютер с интернет-картой

Уже обсуждали выше. Интернет-карта вносит задержку в ответы подозреваемого. Это слишком заметно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А можно ли сделать защиту при помощи внешнего ключа?
Те зашифровать все данные в роботе, а для его запуска юзать дискету с ключом и автораном.
На ходу юзать Дата карту 2-3 уровня (можно даже карту достать) что бы запустить весь код, и после можно вынуть дискету.
И если у нас сперли робота то результату будет ноль. Ведь для его запуска нужно засунуть дискету.

И для того что бы узнать код, нужно тоже юзать дискету или знать ключ.
Сработает ли такой вариант? 

Изменено пользователем Taruu

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, Taruu сказал:

А можно ли сделать защиту при помощи внешнего ключа?
Те зашифровать все данные в роботе, а для его запуска юзать дискету с ключом и автораном.
На ходу юзать Дата карту 2-3 уровня (можно даже карту достать) что бы запустить весь код, и после можно вынуть дискету.
И если у нас сперли робота то результату будет ноль. Ведь для его запуска нужно засунуть дискету.

И для того что бы узнать код, нужно тоже юзать дискету или знать код.
Сработает ли такой вариант? 

какой смысл, если EEPROM могли подменить? Ну засунешь дискету - а какой смысл, если код был запущен еепромой, которая пожет подменить *все*.

Кстати, немного оффтопа, но дата-карта не обязательна. Она медленнее, чем software решения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...