LINUX.ORG.RU

Полное шифрование системы

 , , ,


1

2

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

И дополнительный вопрос: запись на зашифрованный винт происходит исходя из опций монтирования (sync, flush или default), либо по каким-то своим параметрам?


Можно зашифровать всю партицию TrueCrypt-ом, например. При загрузке будешь вводить пароль к партиции, потом будет запуск системы.

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

Важно: система должна запускаться сама, без пароля.

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

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

Он сможет не позволить расшифровать раздел, если зашифрованный диск вытащили в вставили в другой компьютер?

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

http://www.truecrypt.org/

TrueCrypt — компьютерная программа для шифрования «на лету» (On-the-fly encryption) для 32- и 64-разрядных операционных систем семейств Microsoft Windows NT 5 и новее (GUI-интерфейс), Linux и Mac OS X. Она позволяет создавать виртуальный зашифрованный логический диск, хранящийся в виде файла. С помощью TrueCrypt также можно полностью шифровать раздел жёсткого диска или иного носителя информации, такой как флоппи-диск или USB флеш-память. Все сохранённые данные в томе TrueCrypt полностью шифруются, включая имена файлов и каталогов. Смонтированный том TrueCrypt подобен обычному логическому диску, поэтому с ним можно работать с помощью обычных утилит проверки и дефрагментации файловой системы.

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

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

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

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

По сути мне нужно запускать программу только на моём неттопе. Может быть существуют какие-нибудь уникальные характеристики матплаты, которые могли бы служить уникальным ключом для запуска программы. Из мыслей в этом направлении только припаивание USB-устройства к машине, но тогда можно будет припаяться к контактам и считать нужные данные.

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

По сути мне нужно запускать программу только на моём неттопе

А тебе не кажется, что копирастия — это плохо?

но тогда можно будет припаяться к контактам и считать нужные данные.

Решение поставленной тобой задачи невозможно, если есть возможность расшифровать данные, значит вся необходимая информация для расшифровки и извлечения данных уже есть в железе. Можно только усложнить её извлечение, но сделать совсем невозможным невозможно.

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

Чтобы не дать сфальсифицировать данные от dmidecode, мне придётся бОльшую часть кода вставить в свою программу. Не нарушение ли лицензии это, ибо моя программа будет проприетарна.

nivs ()

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

Сделай контроль вскрытия при помощи C4.

Может можно превратить флешку в какой-нибудь USB-токен, который позволит только запускать систему, но не позволит отдельно расшифровывать диски?

Святой Грааль копирастии.

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

Как насчет клиент-серверной модели? Показывай клиенту только результат работы черной коробки, но саму коробку не отдавай.

Ну или подними что-то типа сервера терминалов на котором можно тыкать интерфейс твоей программы и больше ничего.

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

Сделай контроль вскрытия при помощи C4.

Видимо да, боюсь, что это единственный выход.

Святой Грааль копирастии.

Ну прекратите, мне стыдно стало. Такая сфера, что без закрытия сопрут, наплевав на лицензию, и не подавятся, а студентам тоже кушать хочется.

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

Доступа к сети не будет, коробка будет активно передвигаться на большие расстояния с автономным питанием, собирая данные. Очень бы хотелось как-нибудь зашифровать именно систему таким образом, ибо тогда можно будет не беспокоиться над доступом к даже скомпилированному коду. Я пока не знаю, как работает dmidecode, но если просто брать и считывать /sys/class/dmi/id/ , то можно через strace узнать, что я там наоткрывал и сымитировать данные, да и скопировать данные системы полностью тоже особого труда (вроде) не составит, если вообще всё брать за данные для sha256sum

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

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

Решение поставленной тобой задачи невозможно, если есть возможность расшифровать данные, значит вся необходимая информация для расшифровки и извлечения данных уже есть в железе. Можно только усложнить её извлечение, но сделать совсем невозможным невозможно.

Ну в наше время мало что невозможно, но прибавить к стоимости взлома N-ое количество ноликов хотелось бы. Вот если бы, к примеру, Linux умел запускаться только на одном железе (/sys/class/dmi/id/ должен подойти), было бы просто замечательно, только вот встроить в ядро такой код я не смогу из-за довольно низкой квалификации.

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

Тогда тебе ничего не остается кроме как сделать стоимость взлома твоей программы значительно дороже, чем написание этой самой программы с нуля. И при этом не исключено что найдется человек который ломаент твой софт просто «ради лулзов» и выложит его в интернет задаром.

https://en.wikipedia.org/wiki/List_of_copy_protection_schemes

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

но железо категорически бОльшую часть цены будет занимать

Если ты продаешь софт вместе с железом, то это уникальная возможность городить растяжки именно в железе, ведь снять образ жесткого диска на котором находится софт легко (и потом бесконечно с ним экспериментировать), а вот вернуть назад последствия нарушения пломбы, после которого затирается EEPROM с ключем уже гораздо более затратно.

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

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

nivs ()

любая RAM память с батарейкой установленной на плате. контакт батарейки размыкается при открытии корпуса. в качестве такой памяти можно использовать настройки биоса.

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

любая RAM память с батарейкой установленной на плате. контакт батарейки размыкается при открытии корпуса. в качестве такой памяти можно использовать настройки биоса.

И как мне считывать настройки биоса при расшифровке данных? Затея классная, но не знаю, как мне это дело реализовать, разве что задать рандомную дату и в initramfs при расшифровке данных впихивать в качестве ключа хеш даты прямо в /boot/initramfs-linux.img/hooks/encrypt . Не знаю насколько это реализуемо, но выглядит очень и очень заманчиво. Спасибо, анон, ты умеешь быть великодушным.

Спроси у военных ☺

Боюсь, что они мне не ответят. Спасибо за идею, буду пытаться реализовать вышеописанную идею.

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

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

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

Открывают первую коробку и получают сломанную систему. Исследуют посторонние провода, установленные в коробке. заказывают вторую коробку, но на этот раз вырезают в ней отверстие. Извлекают носитель с которого происходит запуск и устанавливают свой. Получают состояние биоса к которому ты привязан. Устанавливают аналогичное состояние биоса в первой коробке. Публикуют статью в журнале хакер о вломе системы «X».

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

«аппаратный ключ», лучше покупной.

в случае отсутствия средств создаешь свое устройство. часть вычислений или логики работы должна производится на этом устройстве. устройство общается с коробкой с помощью ассиметричного шифрования. устанавливаешь на устройстве RAM и батарейку. RAM выбираешь с наименьшим потреблением и минимальным размером памяти. ключи для шифрования получаешь как xor между внешней RAM и энергонезависимой памятью контроллера устройства. перемычку батарейки и RAM маскируешь как экранированный корпус, делая постоянно под плюсом батарейки память, а в случае вскрытия устройства устраиваешь обрыв земли для памяти. на плате устройства помечаешь контакты батарейки неправильно («+» и "-" меняешь местами). ограничиваешь в документации срок использования устройства, а в RAM заводишь счетчик количества часов работы, после определенного времени перезаписываешь RAM нулями, это убережет тебя от разряда батарейки.

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

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

Я ваш бюджет и возможности не знаю, но вот:

1) TPM. Самый дешевый и самый надежный вариант. С помощью TPM (это такой небольшой чип на материнке. Во многих он по умолчанию идет. На моем лаптопе есть, например) вы сможете «спрятать» ключ шифрования винчестера от посторонних глаз, сделав его зависимым от контрольной суммы BIOS, параметров CMOS, MBR, GRUB stage1/stage2, конфига GRUB, ядра, initrd и параметров ядра. Естественно, вы можете настроить, от чего делать его зависимым. В качестве загрузчика вам нужно использовать TrustedGRUB (http://sourceforge.net/projects/trustedgrub/), т.к. он поддерживает TPM.

В чем суть? Вы делаете образ со скриптами для шифрования и дешифрования с хранением ключа шифрования в TPM, ставите его на флешку или винчестер и запускаете на нужном вам компьютере. Скрипты начинают все шифровать, закидывают ключ в TPM и шифруют с зависимостью от текущих значений PCR-регистров (хеши от ядра, initrd, bios, ...). Все. Теперь если изменить хоть что-то из перечисленного выше, ключ шифрования нельзя будет достать из TPM. Необходимо все автоматизировать и не дать пользователю выполять свои команды, суть именно в этом.

Сломать TPM теоретически можно как минимум 2 способами: через модификацию SMBios на материнской плате и через дамп оперативной памяти (cold boot attack). Первое довольно сложно выполнить, второе совсем не всегда получается, и есть патч TRESOR на ядро, который призван бороться с этим. Ну с использованием уязвимостей сервисов на запущенной системе, конечно же. Плюс в том, что при правильной настройке системы, до исполняемого файла вашей программы даже не доберутся.

2) Капсулы, или, как сказал edigaryev, растяжки в железе. Используем какую-нибудь энергозависимую память. При размыкании контакта данные теряются, ничего не дешифруется, программа не запускается. Есть какие-то китайские недорогие решения ($30-$200) такого типа в PCI-порт, даже с модулями ядра под GPL. Я как-то правил модуль одного из таких. Названий не помню.

3) USB-ключи (security-донглы). HASP, SenseLock, вот эти все ребята. Минус такой защиты в том, что она более-менее популярна, и все это относительно просто ломается или эмулируется.

4) Разработать железо и привязать программу к нему. Самый дорогой вариант. Я не знаю, какого плана у вас программа, поэтому он вам может вообще не подойти. Как правило, это какие-то I/O порты в связке с FPGA, на котором какое-нибудь шифрование крутится.

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

Можно зашифровать всю партицию TrueCrypt-ом, например

Базу updatedb, например, /var/lib/mlocate или аналогичную, перенесите куда-нибудь и сделайте симлинк на него.
Иначе глупо как-то.

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

Бюджет довольно маленький, я думаю, что больше 100$ на защиту не получится потратить. Нет возможности использовать устройство больше, чем неттоп, PCI портов там быть не должно. Затея с TPM просто то, что нужно, только вот текущее устройство его не поддерживает и в биосе негде включить. Как я понимаю, нужно искать с наклейкой Win8-compatibility?

Капсулы сложновато будет реализовать, надо будет поискать специальный неттоп для этого, не знаю, есть ли. Разработать железо ну вообще не вариант - это кухонный проект, создающийся на коленке. А разве GRUB (или его разновидность) умеет запускаться с проверкой USB-ключа?

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

Как я понимаю, нужно искать с наклейкой Win8-compatibility?

Не уверен, что наклейка означает наличие TPM.

А разве GRUB (или его разновидность) умеет запускаться с проверкой USB-ключа?

Нет.

Есть еще вариант с технологией TCG Opal. Она есть в современных SSD верхнего ценового сегмента. При включении компьютера, SSD прикидывается диском на 512 мегабайт, например, с установленной операционкой. Грузится операционка и появляется возможность аутентификации диска разными способами, типа пароля, ключа, сетевой авторизации и т.д. Этакий современный ATA Password.

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

А, да, TPM не является требованием Windows 8.

Не такой и верхний ценовой сегмент, Kingston SKC300S37A/60G стоит 2500 р и умеет TCG Opal. Но нужно не диск аутентифицировать, а разрешать только запуск с него. Как я понимаю, если авторизовывать по USB-токену, то можно будет SSD и токен вставить в другой комп и там SSD расшифруется как надо. Не вариант. Вот затея с TPM мне больше всего нравится, только вот даже не представляю, как мне искать неттоп с данной функцией, только если приходить, покупать его, на месте проверять наличие с LiveUSB и сдавать обратно.

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

Правда никак без этого

Почему никак? Может просто сделать открытые исходники и систему?

Может ты подходишь к решению задачи не с той стороны?

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

Такая сфера, что без закрытия сопрут, наплевав на лицензию, и не подавятся, а студентам тоже кушать хочется.

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

продавать буду систему совсем немногим выше себестоимости

Тогда с чего они будут заниматься такой ерундой как считывание памяти и прочее? Может быть следует как раз сделать устройство максимально открытым, чтоб получить конкурентное преимущество над закрытыми аналогами?

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

Ну пока конкурент назревает у них, причём который в 2-3 раза дешевле будет продавать довольно дорогие системы. Комьюнити развивать систему не будет, потому что узкая специализация + спецоборудование. Я сам ратую за открытое ПО (из закрытого только лицензионный PyCharm и игры в Steam, шинда и приблуды очень редко), но не вариант. Да, я открою весь код, когда надоест работать над системой, но не сейчас, ибо конкуренты просто встроят мой код себе в уже сформированные проекты с имеющейся базой клиентов и будет грустно.

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

ибо конкуренты просто встроят мой код себе в уже сформированные проекты с имеющейся базой клиентов и будет грустно.

Но ты вроде собираешься же дешевле продавать.

из закрытого только лицензионный PyCharm и игры в Steam, шинда и приблуды очень редко

Как будто это мало

спецоборудование

Ты же говоришь, что обычный неттоп.

И ты так и не объяснил, для чего конкретно вообще планируется делать эту систему.

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

Но ты вроде собираешься же дешевле продавать.

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

Как будто это мало

Ну PyCharm просто изумительный, игры без комментариев, а шинду приходится иногда админить и с чужими docx файлами работать.

Ты же говоришь, что обычный неттоп.

К которому подключена тонна датчиков и камер.

И ты так и не объяснил, для чего конкретно вообще планируется делать эту систему.

Продвинутый видеорегистратор.

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

Продвинутый видеорегистратор.

Ну я бы предпочёл видеорегистратор или фотоаппарат со свободной прошивкой, чтоб можно было легко добавить недостающую функциональность самостоятельно, например.

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

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

Я бы тоже предпочёл такой регистратор, но там целевая аудитория не та, к системе сбора информации никто руки прикладывать не будет, а вот программу постобработки уже есть смысл ковырять и я очень серьёзно задумываюсь как минимум основной функционал под GPL-подобной лицензией разместить, до этого ещё как минимум год, но саму коробку я анально огорожу 100%. Славься Гейтс, славься Небо, славься Аллах!

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

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

Производители фотоаппаратов тоже могут сказать «да кому нужна функция автоматической съёмки каждые N минут» и не делать ни её ни входного гнезда для питания от сети, ни открытой прошивки чтоб добавить...

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

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

nivs ()

Насчет TPM - он обычно устанавливается на корпоративные ноуты вроде HP/Dell/Lenovo, так что можно просто купить какой-нить юзаный ноут из таких (например что-то вроде HP nc4400). Но есть одно НО - очень может быть, что TPM-а не будет в ноутах, оффициально продающихся в России - вроде как TPM подпадает(подпадали?) под ограничения на экспорт сильной криптозащиты из США. В общем тут надо смотреть, но в BIOS инфа о TPM и опция по его включению/выключению есть.

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

Придётся как-то искать, да, что поделаешь. Спасибо за информацию.

nivs ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.