LINUX.ORG.RU

Защита ОС от клонирования и переноса на другое устройство

 , ,


2

1

Всем привет! Появилась вот такая вот задачка. Пытаюсь решить как это сделать. Поможете?

Есть ОС на raspbian которая залита на SD-карту работающая на raspberry pi 3b+. Необходимо обеспечить защиту образа от копирования или перемещения на другое железо (в т.ч. другую raspberry pi), а также сделать так чтобы просмотреть скрипты или каким-то образом разобрать образ было невозможно.

Доступ к любым файлам и папкам должен быть закрыт – пользователь не должен иметь возможности увидеть код скриптов. При открытии SD-карты на других ПК возможности получить доступ к данным и скриптам быть не должно. Должна быть отключена любая функция по смене пароля суперпользователя и других пользователей. Также должны быть отключены любые команды в консоли. Кроме, секретной, позволяющей войти по суперпользователем. Однако доступ к графическому интерфейсу должен быть сохранен, но урезан(в зависимости от возможностей)

Есть предположение что стоит это организвать как-то так: Управление организуется посредством reverse SSH.

Для защиты используются следующие механизмы:

• При установке и первом запуске генерится уникальный ID в и прописывает его на сервере. (это может быть серийник процессора)

• все скрипты и бинарники шифруются.

• при старте машина подключается к Серверу, на котором УЖЕ прописаны все ID для всех инсталляций, и сообщает свой ID. если он соответствует тому что в серверной базе, то получает разрешение от сервера(код дешифрации) и дешифрует папку, откуда уже и выполняется все остальное.

• Должен иметься базовый образ, который будет устаналвиваться на карту. при первом старте клиент будет генерить machine-id, автоматом отправлять его на сервер. сервер, в свою очередь, генерит public и secret ключи. при помощи public скрипт шифрует раздел (или папку). При каждом включении получать от сервера secret кей для расшифровки раздела (папки).

Ответ на: комментарий от KillTheCat

то-есть решить вопрос программно зашифровав разделы и привязав расшифровку к обмену информацией с сервером и запретив доступ к root не получится?

карту можно будет конечно перетащить, но она работать не будет.

MoiseIisus ()
Ответ на: комментарий от MoiseIisus

Патчим твой клиент и все.

Если уж так хочется, то нужно не OS защищать а клиент - думаю это будет проще осуществить.

Если это какой-то терминал то подумай о SaaS или типа того.

KillTheCat ★★★★★ ()
Ответ на: комментарий от KillTheCat

я не силен в методах защиты, поэтому задаю глупые вопросы.

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

2. чем мне поможет saas? не совсем понял.

Кстати что-то подобное я видел на raspberry у wtware. Конечно по конечной задаче не то, но сама ОС у них защищена.

MoiseIisus ()
Ответ на: комментарий от MoiseIisus

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

Да. Пропатчить нельзя только серверную часть. Уносите приложение в облоко - это сейчас модно

SR_team ★★ ()
Ответ на: комментарий от MoiseIisus
  1. Можно дизассемблировать и либо восстановить протокол получения кода либо пропатчить бинарник. Единственная рабочая защита - неуловимый джо.
  2. Логика на сервере, клиент вынужден постоянно платить за доступ. Я же хз подходит такой вариант или нет.
KillTheCat ★★★★★ ()
Ответ на: комментарий от KillTheCat

А если реально все залить эпоксидкой и залочить доступ ко всем значимым разделам ОС , разрешив запуск только определенной программы? Карту не выпилишь, образ не сделаешь.

MoiseIisus ()

Пользователь вытащит sd карточку и вставит в комп. Если у тебя зашифрован весь раздел - просто посмотрит ключ шифрования и расшифрует. Либо механизм получения ключа шифра шифрования и расшифрует после этого и получит все данные. Образ всегда можно разобрать и всё посмотреть так, как захочется этому пользователю.

Единственное, что ты можешь сделать - оставить в покое операционку в целом и использовать какую-то проприетарную защиту для своей софтины отдельно. Посмотри коммерческие решения, как они защищают свой продукт всякими сидикеями и серверами с оными. Весь диск и всю операционку ты не защитишь.

fehhner ★★★★ ()
Ответ на: комментарий от MoiseIisus

А если реально все залить эпоксидкой

Я бы лично прогрел паяльным феном, получил доступ к контактам флешки и всё сразу прочитал.

и залочить доступ ко всем значимым разделам ОС

Ну ты этого не сделаешь. Я вставлю флешку в комп, сниму образ всей флешки полностью через ddrescue и буду исследовать разделы, если захочу.

Карту не выпилишь, образ не сделаешь.

Тебя интересует какое-то специализированное дорогое устройство с аппаратным шифрованием, если именно такие хотелки. Но никак не сд карта и малина.

fehhner ★★★★ ()
Ответ на: комментарий от fehhner

спасибо за ответ. :) надо подумать что с этим теперь делать. видимо wtware, в которой я подобную защиту предполагал, как пример, по какому-то другому принципу работает.

MoiseIisus ()

Все такие защиты - чушь. Чтобы код исполнялся его надо расшифровать, ключ должен лежать рядом и исследователь его найдет. Можно накрутить говнокода и запутать все в надежде, что исследователю будет лень ковыряться. Так работает защита игр denuvo. Так себе работает, но бабки с издателей стригут.

Второй путь - залить в эпоксидку, заварить в броню. Опять же в надежде на то, что исследователю будет лень возиться с феном и напильником.

Третий вариант - поставить к малинке часового.

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

Короче, твоя задача не решается (иначе как 3м вариантом). Если кто-то обещает её решить - он врёт.

legolegs ★★★★★ ()
Ответ на: комментарий от MoiseIisus

wtware

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

fehhner ★★★★ ()

Вариант с эпоксидкой хороший, только её всё равно можно просверлить/спилить. Тут тебе нужна не сд а оператива с батарейкой, и всю плату обмотать проводом питания, а потом уже заливать.

ya-betmen ★★★★★ ()
Ответ на: комментарий от MoiseIisus

Эпоксидкой залить, попутно обматывая провод питания. Что получится, залить ещё чем-нибудь. Будет такой шарик прикольный. Мне нравится. Можно ещё полирнуть и подставку какую замутить. Реально эпплы удавятся от зависти.

turtle_bazon ★★★ ()
Ответ на: комментарий от turtle_bazon

И при этом их ломают.

Ну, во-первых, я помню, сколько времени понадобилось на Denuvo (довольно много). На какой-то игрухе, они сами тогда лажанули и выложили одну версию в обновлении с отключенным. Люди заметили прирост в 5-10 фпс, как сообщалось в новости и ролике-сравнении двух версий на ютубе. Так что эти защиты...
Во-вторых, я например, покупаю игрушки только лицензионные всё равно. Не смотрел особо, чтобы ломаные выкладывали для линукса. Да и поставить игрулю с сомнительным набором патчей от неизвестного хацкера, представляется для меня худшим вариантом, чем оплатить оную.
В-третьих, многим проще оплатить, чем сидеть-ковырять защиту (ведь для этого нужен специальный человек со знаниями). Так что, проприетарные защиты - никак не панацея, но кому-то подспорье. А кому-то - и палка в колесо (как в том случае с фпс).

fehhner ★★★★ ()
Последнее исправление: fehhner (всего исправлений: 1)
Ответ на: комментарий от fehhner

Ну смотрите. С денуво проблема только в том что эта «зашита» добавляет 99% интерпретируемого говна в эмуляторе дабы осложнить поиск закладок пользователями. И естественно при серьёзных попытках «защитить» блоб, ударит по производительности. Однако, если есть инструмент, который поможет раскрутить мусорные инструкции, то это и не защита вовсе. Вон на ютубе гайды по взлому были.

чтобы ломаные выкладывали для линукса

теперь я знаю почему некоторые линуксоиды так любят гог

linuxnewbie ()
Ответ на: комментарий от MoiseIisus

У тебя должен быть незашефрованый BIOS и MBR, он может верифицироватся крыптографически. Далее /boot / уже можно шифровать.

Можно вообще без диска, бутатся с сервера, не шифрованный BIOS, PXE и кажись по tftp пойдёт не шифрованным /boot где есть ядро и инитрамфс. В последнем уже точно можно организовать шифрование и монтирование шифрованного корневого раздела с сервера.

Атака может проводится на все не шифрованное и крыптографически не верифицируемое.

В принципе на раннем этапе надо вводить пароль локально, в MBR sshd тяжело засунуть. Если по сети, будет хуже, ядро с инитрамфс пойдут через сеть нешефрованы.... толку от ssh в этом случае не вижу.

anonymous ()
Ответ на: комментарий от legolegs

Короче, твоя задача не решается

Почему? Крыптографически верифицированный BIOS и MBR с _вводом_ одного локального пароля для расшифровки /boot.

anonymous ()
Ответ на: комментарий от linuxnewbie

играм с гога не нужны кряки и эмуляторы, это многое объясняет

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

fehhner ★★★★ ()
Последнее исправление: fehhner (всего исправлений: 1)
Ответ на: комментарий от anonymous

Почему? Крыптографически верифицированный BIOS и MBR с _вводом_ одного локального пароля для расшифровки /boot.

И чего с того? У меня если пароль есть, я спокойно на компе примонтирую. Если он в файле будет храниться и ручками вводить не надо, то этим файлом и расшифрую, потратив ровно 2 минуты проверить.

fehhner ★★★★ ()
Ответ на: комментарий от fehhner

...если пароль есть...

В этом и вся защита, кто знает пароль тот может пользовался, другие нет.

Если автор хочет чтобы юзеры включали комп не зная пароля расшифровки, то ему надо сильно потрудился, чтобы сеть с ssh в MBR засунуть и чем-то типа трастедбут или секуребут подписать. Это будет дороже того что он хочет сохранить в тайне.

anonymous ()
Ответ на: комментарий от fehhner

Из всего вышеописанного понятно что адекватной защиты нет. Если делать защиту от дурака и того кто не обладает большим количеством времени и ума:

1. Исключить прямой доступ к SD-карте - залить нафиг ее эпоксидкой 2. Внутри ОС урезать пользака в правах по самые помидоры, выпилить возможность запускать любой софт(включая командную строку) кроме определенного. 3. Управлять через reverse SSH - хотя тут скорее всего и будет зарыта дырка.

MoiseIisus ()
Ответ на: комментарий от MoiseIisus

Вы сейчас описали типичный андроид телефон с отключённой отладкой, залоченым загрузчиком и без установленного маркета/браузера. Есть ли смысл в карте памяти если собираетесь заливать ее эпоксидкой? Может распаять на плате чип флэша и работать с ним?

anonymous ()