Асимметрично зашифрованная файловая система

Я удивлен видеть, что Вы уже не рассматриваете использование reCAPTCHA.

3
задан 29 November 2009 в 08:41
2 ответа

Я рекомендовал бы сделать это на прикладном уровне.

В этом случае затем переместите поток в StackOverflow, однако, мой ответ был бы приблизительно:

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

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

Так, например, Вы могли использовать AES / CBC для данных логов сам, который будет довольно быстрым (плюс существуют загрузки implementions).

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

Таким образом, Вы могли бы использовать (говорят), что RSA для шифрования (использование открытого ключа) симметричного ключа для блока, который был бы надежно случайным образом выбран для того блока. Симметричный ключ затем остается в памяти некоторое время до концов блока, и это вытерто.

Файловая система, которая поддерживала это, будет иметь ограниченный usefuless, потому что Вы могли только смонтировать его только для записи или только для чтения; операционные системы обычно не понимают понятия файловых систем только для записи :)

3
ответ дан 3 December 2019 в 06:23
  • 1
    Спасибо! Ваш последний абзац является пятном на; я надеялся, что могло бы быть решение, которое позволяет приложению писать, содержание файла (добавьте, только), только выставляя статистику файла (имя, размер, полномочия, и т.д.) к приложениям и операционной системе. Моя проблема имеет дело с журналами Apache, конкретно. Я могу просто попытаться найти способ помешать тем журналам быть записанными локально вообще и иметь их только доставленный в челноке прочь к другой системе. Я понял после того, как я записал вышеупомянутый вопрос это, которое будет большим простым решением. :) –  Justin Thomas 30 November 2009 в 05:56

Я провел некоторые исследования, кодировку и документацию; вот ссылка на сценарий использования...

https://github.com/S0AndS0/Perinoid_Pipes/blob/master/Documentation/Paranoid_Pipes_Scenario_One.md

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

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

Потому что журналы записываются на несколько строк за раз, делая одну сторону зашифрованной файловой системы немного поверх kill, и вне моих навыков, вместо этого сценарий автоматизирует установку определенного типа файла (mkfifo), который действует как именованная трубка, и набор правил сценария, которые слушают действия по записи в именованный трубный файл. Эта пара файлов затем генерирует третий файл, тот, который вы запрашивали, зашифрованный приложенный файл журнала, который хост не может прочитать. Операции сценария похожи на echo 'log message' | gpg -a -r email@host.domain >> server.log, выполняемый для каждого действия в журнале, но с именованным каналом вместо |, а логика сценария обрабатывает gpg'ing и добавляемый к файлу. Использование именованных каналов вместо анонимных каналов означает, что только выходной путь сервиса, генерирующего журнал, должен быть обновлен, чтобы использовать путь именованного канала вместо стандартного файла для использования шифровальных задач.

Обратите внимание, что есть и другие возможности, которые могут быть полезны уже запеченные в , которые позволяют шифровать и отправлять лог-файлы по электронной почте, когда они достигают заданного пользователем размера, эти возможности отделены друг от друга, чтобы позволить программе IDS/IPS разобрать лог-файлы или сделать отправленные лог-файлы еще более сложными для просмотра, когда они объединены с шифрованием на запись.

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

https://security.stackexchange.com/a/138877/82480

Edit/Update: похоже, что ссылки в markdown на GitHub очень специфичны для браузера, так что вот копия сценария один из вышеперечисленных ссылок.

Настраиваемый сценарий использования для веб-сервера

  • Скачайте и скопируйте сценарий в ${PATH} dir

```

git clone https://github.com/S0AndS0/Perinoid_Pipes
cd Perinoid_Pipes
cp Paranoid_Pipes.sh /usr/local/sbin/
chown ${USER}:${USER} /usr/local/sbin/Paranoid_Pipes.sh
chmod 700 /usr/local/sbin/Paranoid_Pipes.sh

````

  • Покажите доступные опции командной строки и их текущие значения.

```

Paranoid_Pipes.sh --help

```

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

```

Paranoid_Pipes.sh --copy-save-yn='yes'\
 --copy-save-name="/jailer_scripts/website_host/Web_log_encrypter.sh"\
 --copy-save-ownership="notwwwuser:notwwwgroup"\
 --copy-save-permissions='100'\
 --debug-level='6'\
 --listener-quit-string='sOmErAnDoM_sTrInG_wItHoUt_SpAcEs_tHaT_iS_nOt_NoRmAlY_rEaD'\
 --log-level='0'\
 --named-pipe-name="/jailed_servers/website_host/var/log/www/access.log.pipe"\
 --named-pipe-ownership='notwwwuser:wwwgroup'\
 --named-pipe-permissions='420'\
 --output-parse-name="/jailed_logs/website_host/www_access.gpg"\
 --output-parse-recipient="user@host.domain"\
 --output-rotate-actions='compress-encrypt,remove-old'\
 --output-rotate-check-requency='25000'\
 --output-rotate-max-bites='8388608'\
 --output-rotate-recipient="user@host.domain"\
 --output-rotate-yn='yes'\
 --output-save-yn='yes'\
 --disown-yn='yes' --help

````

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

Именованный путь к файлу канала (путь к файлу --named-pipe-name) должен быть вручную добавлен в путь лог-файла вашего веб-сервера, он отличается для каждого демона/сервера, так что ваши обычные клиенты записывают данные лог-файла в именованный файл канала.

Копия скрипта (сохраненная в --copy-save-name file path) - это то, что делает magic, прослушивая действия по записи в свой родственный ему именованный трубный файл, он проталкивает зарегистрированные строки через GnuPG и добавляет результаты (используя открытый ключ для --output-parse-recipient для начального шифрования) к файлу, указанному опцией командной строки --output-parse-name.

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

Если ваш сервер может отправлять электронную почту, то измените опции --output-rotate-rateactions, чтобы включить email в качестве действительного действия, и в конце концов дважды зашифрованные лога будут переданы.

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

.
1
ответ дан 3 December 2019 в 06:23

Теги

Похожие вопросы