The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Шифрование данных с хранением временных файлов в рамдиске (linux kernel crypt ramdisk tmpfs ssl openssl)


<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, kernel, crypt, ramdisk, tmpfs, ssl, openssl,  (найти похожие документы)
From: Hash <cy-wolf@inbox.ru.> Newsgroups: http://linux.pk.ru Date: Mon, 20 May 2005 18:21:07 +0000 (UTC) Subject: Шифрование данных с хранением временных файлов в рамдиске Оригинал: http://linux.pk.ru/phorum/read.php?f=5&i=5&t=5 Маниакальное шифрование. Многим в наше время требуется защита своей информации. Причины могут быть разные. Существует огромное количество программ шифрования, но все они (по крайней мере большинство) имеют один существенный недостаток. Существует потенциальная опасность раскрытия конфеденциальных данных. Дело в том, что программа шифрования должна хранить незашифрованную копию данных на диске (если конечно операции чтения/записи не выполняются совместно с шифрованием/дешифрованием, что отнимает не хило ресурсов)для пользователя и поэтому существует потенциальная возможность заполучить эту информацию. Когда к вам врываются в квартиру и попутно вырубают свет, то обратно зашифровать не остается времени (и электричества :) ), если, конечно, у вас нету UPS'а. Но эта проблема отпадает, если хранить незашифрованные данные в _ЕНЕРГО_ЗАВИСИМОЙ_ПАМЯТИ_ , то бишь в оперативной памяти. После неожиданного выключения света информация исчезает. Для реализации этого способа защиты информации в Линуксе вам нужна поддержка ram дисков в ядре и пакет openssl. Также можно собрать модуль, который называется rd.o , а исходник соответственно rd.c . Собрать этот модуль можно поставить m напротив ram disk support в конфиге ядра и дав команду make modules. После этого переместите этот модуль в /lib/modules/<версия ядра>/block/. При создании ram диска этот модуль будет автоматически загружен в память. Теперь отведём объём для нашего хранилища. Это делается командой: dd if=/dev/zero of=/dev/ram1 bs=1k count=4096 где count - размер в килобайтах. Для шифровки/дешифровки я написал два простеньких скрипта. Назовём их encode и decode. #!/bin/bash # Encode if [ ! -e "$1" ];then echo "Directory $1 doesn't exist!" exit 1 fi echo "Compressing dirctory..." tar cfz private.tgz $1 # Creating archive and compressing rm -rf $1 echo "Encoding..." openssl bf -salt -in private.tgz -out private.tgz.sec #encoding shred -u private.tgz # Delting strongly echo "Done." Вместо bf (BlowFish) в команде openssl можно постаить любой другой доступный алгоритм шифрования. Подробнее: man openssl #!/bin/bash # Decode if [ ! -e "$1" ];then echo "File $1 doesn't exist!" exit 1 fi echo "Creating file system..." mke2fs -m 0 /dev/ram1 # making ext2fs echo "Mounting..." mount -t ext2 /dev/ram1 /tmp/secret echo "Decoding..." openssl bf -d -salt -in $1 -out /tmp/private.tgz if [ ! -e /tmp/private.tgz ];then echo "Wrong password!" exit 1 fi tar xfz /tmp/private.tgz -C /tmp/secret shred -u /tmp/private.tgz echo "Done." Скопируйте их куда нибудь($HOME/bin) и сделайте исполняемыми (chmod u+x). Если вы запускаете скрипт дешифровки не из-под root'а, то вам придётся добавить в /etc/rc.d/rc.local добавить команды создания файловой системы и её монтирования. Установка suid - бита на скрипт decode ничего не даст :( Все! Теперь вы можете быть спокойны за свою информацию во время неожиданного визита сотрудников спецслужб или других враждебных вам личностей :) Правда информацию надо часто сохранять. Естественно, данное решение не подходит для защиты видео и фото материалов не совсем (совсем не :) этического содержания ввиду их большого размера. Но для небольших файлов это вполне подходит. Если вы хотите вернуть свою память обратно выполните команду dd if=/dev/zero of=/dev/ram1 bs=1k count=0 Благодаря hatred'у был найден ещё один способ решения данной задачи. Он заключается в использовании tmpfs : mkdir /tmp/tmpfs mount -t tmpfs /dev/shm /tmp/tmpfs ...и последующей работе с этим какталогом. Успехов! Hash ([email protected]) Большое спасибо Денису Каледину([email protected]) и его статье "Шифрование отдельных директорий с помощью openssl" http://linuxshop.ru/linuxbegin/article401.html

<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру