Информационная безопасность

индекс
289,97

Абсолютно защищенная файловая система

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

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


Мне кажется, я знаю, как это можно реализовать.



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

Итак, изначально диск у нас представлен набором блоков фиксированного размера, блоки идут подряд и могут быть пронумерованы от 0 до N. Предположим, у нас есть некая функция F(i,K), принимающая на вход номер блока i и некий ключ K. Функция такова, что при любом 0<=i<=N ее результат лежит в диапазоне [0..N] и для различных i результат будет разным. Другими словами, функция F транслирует «логический» номер блока в «физический», в зависимости от ключа K. Такую функцию можно построить, например, путем перестановки битов в i.

Сначала мы генерируем ключ K1 и создаем файловую систему на «перемешанном» при помощи F диске. Заполняем ее некоторыми данными, которые будем называть «открытыми». Данные шифруются по определенному алгоритму (о нем ниже). Ключ K1 мы можем смело сообщать злоумышленникам. Домустим, эти данные заняли некий набор M[] блоков на ФС.

Следующим шагом мы генерируем ключ K2 таким образом, чтобы блоки, входящие в M[], соответствовали известному набору i, скажем, i=N-Nm...N, где Nm — число блоков в M[]. В дальнейшем мы эти блоки не используем. Это, наверное, самый нетривиальный шаг, но его можно облегчить, если алгоритм размещения файлов по блокам в ФС достаточно прост.

На оставшемся месте, в блоках i=0...N-Nm-1, размещаем закрытые данные, доступ злоумышленников к которым нужно исключить. Данные шифруются.

Об алгоритме шифрования. Для обеспечения невозможности модификации данных на ФС без ее разрушения, необходимо использовать ассиметричное шифрование с открытым ключом. При этом «открытый ключ» используется для чтения (расшифровки данных), а «закрытый» — для записи (шифровки). Открытый ключ, используемый для расшифровки «открытых данных» можно сообщить злоумышленникам, однако закрытого ключа им давать не следует (это будет трудно, да, но вполне возможно). Злоумышленники смогут прочесть данные из открытой части ФС, но не смогут ее модифицировать.

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

Таким образом, в случае захвата диска и вас злоумышленниками, вы можете смело сообщить им K1 и открытый ключ для чтения данных из «открытого» раздела. Наличие же на диске еще каких-то данных вы можете смело отрицать, доказать их наличие, не зная K2 и второго набора ключей шифрования будет невозможно. Также как будет невозможна модификация данных в «открытом» разделе, поскольку «закрытого» ключа для записи вы этим самым злоумышленникам, разумеентся, наотрез откажетесь сообщать.

Не думаю, что я первый, кому пришла в голову подобная идея, так что если кто-нибудь из читателей укажет на уже существующую реализацию подобного — буду очень благодарен.
+3
23 апреля 2010, 15:53
6

комментарии (36)

+2
GHS #
Битлокер?

И да, нехорошо использовать асимметричную криптографию для шифровки данных. Тормозить будет.
+1
Hemul #
Иногда безопасность дороже :)
–3
GHS #
Это все равно особого смысла не имеет. Есть хорошие алгоритмы симметричного шифрования, ГОСТ 28147 например.
0
Hemul #
симметричное шифрование не поможет уберечься от модификации
+3
bobermaniac #
Насколько вы готовы полчаса ждать расшифровки 10-килобайтного файла?
–2
Hemul #
ну, полчаса это как-то больно круто. На крайний случай, можно использовать хардварный ускоритель.
–2
bondbig #
ну, никто не мешает при помощи асимметричного шифрования проводить только аутентификацию, а затем шифровать симметричным. Как в алгоритме Диффи — Хеллмана.
–2
Hemul #
но тогда нельзя разделить чтение и запись. Открыв доступ на чтение мы сразу даем возможность модификации.
0
GHS #
Уже давно придумали, как сделать так, чтобы при вводе ключа показывался другой раздел или уничтожался нужный. Это можно решить другими мерами без ненужной потери производительности за счет использования асимметричной криптографии.
–1
FloppyFormator #
Я вижу один минус: если злоумышленнику нужно скомпрометировать вас, ничего не мешает снести эту файловую систему и отформатировать диск в FAT-32/NTFS/выбрать нужное. Или просто подключить другой диск, если шифрование будет реализовано на аппаратном уровне. После этого записать на диск компрометирующие данные будет очень легко.
0
Hemul #
да, я тоже об этом подумал. Но от такого защититься вообще нереально техническими средствами. Надеюсь, что наши злоумышленники еще не настолько обнаглели :)
–1
FloppyFormator #
Если хватает наглости скомпрометировать, то наглость для того, чтобы обойти программную защиту на уровне ФС, тоже найдётся.

Другой вопрос: ключ К1 можно честно слить, чтобы уберечь себя от известных методов криптоанализа. Но кто мешает применить эти методы для получения К2?
0
Hemul #
какой-такой K2?! Гражданин начальник, я и слов-то таких отродясь не знаю, вот, на бумажке у меня пароль написан, на мониторе специально висит, от склероза. И файлы вот, мне скрывать нечего, гражданин начальник!
–1
FloppyFormator #
Под этим паролем можно только читать. И ты мне будешь врать, что никогда ничего не записывал?

Вот и файл свеженький: дата изменения сегодняшняя.
–2
Hemul #
я требую встречи с адвокатом!
–1
lexa0 #
А повстречаетесь с паяльником.
+1
bondbig #
метод подкидывания улик никуда не делся, да. Это все равно как травки подкинуть подозреваемому, чтобы надавить на него.
+7
DrAlan #
В вашем сервере была найдена травка, обвинитель говорит вы стояли на раздаче. )
+1
Tanner #
Кажется, эта проблема называется plausible deniability. Почитайте, какое решение предлагает TrueCrypt: www.truecrypt.org/docs/?s=plausible-deniability.
–1
Hemul #
решение интересное, да :) В стиле — создать криптованный диск и никому ключ не давать. Суть в том, что в некоторых ситуациях отказаться выдавать ключ слишком дорого.
+2
Splin #
Вы не поняли суть.
Там создается зашифрованный диск, а внутри него еще один зашифрованный диск. В зависимости от того, какой введен пароль, открывается содержимое либо одного, либо другого. При чем если существование первого доказать легко, то существование второго — теоретически недоказуемо. Но опять же, повторюсь, терморектальный криптоанализ вскрывает и такую защиту.
0
Hemul #
хм. Абсолютно недоказуемо? Даже если знать один из паролей?
0
Splin #
Даже если знать один из паролей, как утверждает разработчик — не доказуемо, при соблюдении приведенных советов и требований по безопасности.
0
Tanner #
Нет, там совсем о другом. Можно создать два шифрованных тома в одном файле (или две ОС в одном шифрованном разделе). Доступ к ним будет определяться только тем, какой пароль введён.
0
Splin #
«физический доступ (с возможностью применения мер физического воздействия) непосредственно к вам.» — возможность вскрыть любую защиту, если вы сами знаете, как к ней получить доступ. Вопрос силы воздействия.

А скрытую систему в системе тот же TrueCrypt, как указали выше позволяет вполне себе комфортно создавать, два пароля — один реальный, другой фейковый с подстановочными файлами.
–1
Hemul #
насколько я понял, в truecrypt все равно файл со скрытой системой будет торчать наружу. И владельцу вполне резонно могут задать вопрос — а что это у вас тут за фигня? И по почкам его, по почкам.
0
youlose #
Нет, там можно разделами прятать, а учитывая что всё остальное место на диске забивается случайным мусором, обнаружить такой раздел — крайне непростая задача.
0
Antispammer #
если злоумышленники получили доступ к вашему телу, то, при помощи паяльника, примененного к вам, любая криптография будет сломана вами же в считанные секунды.
+1
mikevmk #
Как не стыдно называть ОМОН злоумышленниками?
0
Zoresvit #
Абсолютно защищенной файловой системе на конечном автомате никогда не получится :) Вероятность обмана злоумышленником равняется отношению множества криптограмм ко множеству аутентифицированных криптограмм. Так как в знаменателе бесконечности никогда не будет, то и вероятность всегда будет ненулевая.
0
Hemul #
я честно пытался понять смысл вашего комментария, но не смог. Наверное, я тупой.
0
Zoresvit #
Если кто-то чего-то не знает, это еще не значит, что он тупой ))
Симметрическое шифрование, как и использование избыточных кодов не защищает систему от обмана (подмены сообщения).

Пускай P — вероятность обмана системы злоумышленником, C — количество допустимых криптограмм, Ca — количество аутентифицированных криптограмм (то есть таких, с помощью которой можно обнаружить обман).

Тогда вероятность обмана злоумышленником: P = C / Ca;

Для обеспечения аутентификации необходимо вводить избыточность в криптограмму, иначе если C = Ca, то вероятность обмана равна 100%.

Так как бесконечное количество аутентифицированных криптограмм Ca мы обеспечить не можем, то и вероятность омана никогда не может равняться 0. А значит абсолютно защищенную систему создать невозможно.
0
Hemul #
а, понял о чем речь. Я имел в виду нечто гораздо более простое — файлы на диске шифруются закрытым ключом, а расшифровываются (при чтении) — отрытым. Если злоумышленники захотят изменить данные на диске (например, чтобы подставить владельца под судебное преследование) — им необходимо будет знать закрытый ключ.
0
Zoresvit #
Тогда да, все правильно. А на счет медленности сего процесса, о котором говорили, так это тоже решается. Сейчас почти везде для непосредственного шифрования данных используют симметричные шифры, а уже сам ключ шифруется ассиметричным алгоритмом. Таким образом и скорость высокая, и разделение открытых и закрытых ключей реализовано.
0
Hemul #
к сожалению, в данном случае это не прокатит. Получив ключ симметричного шифрования можно будет и читать и писать.
0
Zoresvit #
Да, а непонятно было, потому что я ошибся слегка: вместо «С — количество допустимых криптограмм» должно быть «количество допустимых сообщений» (М).

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