Сохраняем безопасно свои данные: p2p файловая система с шифрованием в облаке

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

Для шифрования была выбрана распределенная файловая система Tahoe-Lafs, построенная на технологии p2p. Достоинство данной технологии, что файлы шифруются и записываются на ноды в виде кусочков (подобно bittorrent). А сохранять данные будем в программу wuala (облачную проприентарную файловую систему, аналог dropbox).

С помощью SuseStudio был склонирована моя собственная разработка (Tahoe-Lafs live disk на базе OpenSuse 11.4) и была произведена доработка: установлены x11, icewm, java, не достающие компоненты и таким образом сборка стала выглядеть так:

image

Еще пришлось доработать файлы: permissions.local, windowmanager, без которых не запускались x11 из под обычного пользователя (не root), т. к. suid программы практически полностью уже исключены в новых сборка linux.

Собираем образ в веб студии в формате OFV image, скачиваем его и импортируем в VirtualBox и запускаем нашу виртуальную машину.

image

В консоли под пользователем root создаем папку /tahoe в не папки /tahoe/1, /tahoe/2, /tahoe/3, т. к. минимальное количество nod для работы 3 шт и папку для introducer (tracker на языке bittorrent): /tahoe/intro. Изменяем права для данной папки для всех: chmod +x -R 777 /tahoe/*
Супер пользовательскую консоль закрываем и создаем файл в домашнем каталоге и в папке /home/tahoe/allmydata-tahoe-1.8.2/bin с содержанием:

createall.sh
#/bin/sh

./tahoe create-introducer /tahoe/intro &
./tahoe create-node /tahoe/1 &
./tahoe create-node /tahoe/2 &
./tahoe create-node /tahoe/3 &

startall.sh
#/bin/sh

./tahoe restart /tahoe/intro &
./tahoe restart /tahoe/1 &
./tahoe restart /tahoe/2 &
./tahoe restart /tahoe/3 &

Делаем их запускными: chmod +x *.sh

Осталось сконфигурировать Tahoe. В каждой папке редактируем /tahoe/номер/tahoe.cfg
В нем даем название ноды и изменяем номер порта веб интерфейса, т. к. иначе будет конфликт:
т. е. Первый файл выглядит так: /tahoe/1/tahoe.cfg

[node]
nickname = Tahoe-Wuala1
web.port = tcp:3456:interface=127.0.0.1
web.static = public_html
#tub.port =
#tub.location =
#log_gatherer.furl =
#timeout.keepalive =
#timeout.disconnect =
#ssh.port = 8022
#ssh.authorized_keys_file = ~/.ssh/authorized_keys

В секции где количество нод для сохранения изменяем на 3:

[client]
# Which services should this client connect to?
introducer.furl = None
helper.furl =
#key_generator.furl =
#stats_gatherer.furl =

# What encoding parameters should this client use for uploads?
shares.needed = 3
shares.happy = 3
shares.total = 3

Теперь данный файл tahoe.cfg можно скопировать во вторую папку с заменой файла, и во второй папке изменить только порт и имя ноды: nickname = Tahoe-Wuala2
web.port = tcp:3457:interface=127.0.0.1 и в третьей: nickname = Tahoe-Wuala3
web.port = tcp:3458:interface=127.0.0.1

Пора запускать наш веб сервис. Запускаем созданный нами файл в /home/tahoe/allmydata-tahoe-1.8.2/bin/startall.sh

После запуска в папке /tahoe/intro появится адрес для introducer нашего хоста. Файл cat introducer.furl копируем в каждую папку /tahoe/1, /tahoe/2, и /tahoe/3.

Устанавливаем клиент, загружая его с сайта wuala.com, в консоли из под пользователем root:
rpm -ihv cdn.wuala.com/repo/suse/wuala-current.i386.rpm

Запускаем его уже под обычным пользователям и регистрируемся. Можно использовать мой промо код NNJFMJAK3HGH7P4J7GAC, т. к. по умолчанию дается всего 1 гб, а с помощью приглашений можно получить больше свободного места для хранения. Создаем папки для хранения в wuala:

www.wuala.com/referral/NNJFMJAK3HGH7P4J7GAC

В программе создаем папку tahoe и в ней подпапки 1,2,3 и в каждой из них storage — туда будут закачиваться зашированные файлы от tahoe

image

Теперь нужно поставить сим линки (ссылки) на реальную файловую систему opensuse. С помощью mc и меню File-Symlink:

image

Т. е. Папка /tahoe/1/storage ссылкается в папку в интернете в wuala: /home/tahoe/WualaDrive/ВашлогинWuala/tahoe/1/storage; /tahoe/2/storage ссылкается в wuala: /home/tahoe/WualaDrive/ВашлогинWuala/tahoe/2/storage и третья папка соответственно в /tahoe/3/storage ссылкается в папку в интернете в wuala: /home/tahoe/WualaDrive/ВашлогинWuala/tahoe/3/storage

Перезапускаем нашу tahoe скриптом startall.sh. Запускаем в консоли из под root сервис ssh: service sshd start и подключаемся в другой машины к tahoe через перенаправление портов:

ssh -C tahoe@айпивиртуальной_машины -L localhost:3456:localhost:3456

Открываем наш браузер и смотрим что у нас получилось:

image
image

Все нормально, ноды подключились. Пробуем создать папку, нажимаем Create a directory.
Смотрим информацию о ней: More info on this directory и видим адрес: Directory writecap URI:DIR2:7awqdjdkkkwookbhc4eigffgu4:vbnajdeshk4hgb6eatamfycdfolydafy42hm6uv7d7xmajhu4mpa. Остается добавить фронтэнд (sftp). Для этого в папке /tahoe/1/private создаем файл ftp.accounts с содержимым:
renat renat URI:DIR2:7awqdjdkkkwookbhc4eigffgu4:vbnajdeshk4hgb6eatamfycdfolydafy42hm6uv7d7xmajhu4mpa

В файле /tahoe/1/tahoe.cfg добавляем о секцию о том, что у нас есть sftp:

[sftpd]
enabled = true
port = tcp:8022:interface=айпивиртуальноймашины
host_pubkey_file = private/ssh_host_rsa_key.pub
host_privkey_file = private/ssh_host_rsa_key
accounts.file = private/ftp.accounts

В папке /tahoe/1 запускаем генерацию ключей шифрования для sftp
ssh-keygen -f private/ssh_host_rsa_key

Снова перезапускаем tahoe с помощью скрипта startall.sh. И на любом комьютере в любой системе (и в windows в том числе) теперь можно настраивать FileZilla используя имя и пароль:renat (мы его задали ранее в файле ftp.accounts):

image

В меню FileZilla Передачи ставим Сохранять Временные метки файлов, чтобы при закачки файлов в tahoe у нас сохранялась дата.

Подключаемся и можем закачивать файлы. Вот как выглядит результат закачки файла FTP-and-SFTP.rst из папки /home/allmydata-tahoe-1.8.2/docs/frontends/. Как видим файл 10,8 кб разбился на кусочки по 4,9 кб и был закачан в зашифрованном виде:

image

Таким образом мы храним в Wuala куски шифрованных файлов в непонятными названиями. Доступ к ссылки доступен только для нас, т. к. ключи шифрования нод хранятся в локальной системе (OpenSuse). Для тех, кто особенно страдает параноей можно рекомендовать следующее: Первую ноду использовать в wuala, вторую ноду использовать в DropBox, а третью хранить вообще локально в виртуальной машине. Таким образом, если администраторы даже получат доступ к вашей информации, им будет доступен кусок файла 1/3 содержания, а остальные куски лежат в других местах и в других сервисах. Так же возможен интересный вариант, когда вы храните 2 ноды в wuala, 2 ноды в dropbox и 1 ноду в локальной папке. Таким образом даже если у вас ломается жестких диск, то при настройке как в данной статье получим что доступны 4 ноды (при минимуме в 3) для восстановления информации, так же как и если будет не доступен один из сервисов, например wuala, с помощью 2х нод dropbox и локальной ноды вы сможете считывать и записывать свою информацию.

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

Комментарии 22

    +5
    1. Несколько сумбурное изложение.
    2. Слишком много телодвижений.

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

        а если хочется p2p синхронизацию между своими компами то можно воспользоватся aerofs
          0
          Aerofs пропиентарная, а мы же говорим о безопасном хранении. Если не интересует безопасность, то можно верить лицензионным соглашениям по облачным программам.
            0
            лично для меня проприетарный софт который я могу проконтролировать ничем не отличается от свободного.
              0
              Как вы можете проконтролировать данный софт, например что он не читает файлы из других папок и не закидывает их к себе в облако?
                0
                очень просто — посмотреть дисковую и сетевую активность софтины. в этом ведь нет ничего сложного
                  0
                  А перехват нажатия клавиш клавиатуры, копирование экрана (картинки) в файл?
                    +1
                    ну в винде это сразу покажет антивирус… в линухе самому придется проверять. но как по мне это крайняя степень паранойи. ни одна коммерческая компания не рискнет портить себе репутацию и терять доходы ради ВОЗМОЖНОЙ выгоды от кражи личной инфы. А вот со свободным софтом такое бывает — недавняя история с vsftpd тому подтверждение.
                      0
                      Вряд ли антивирус покажет о наличии недокументированных возможностей. Речь идет не о том, что программа скачает троян, который поймает антивирус, а о том, что может иметься возможность читать любые файлы, копировать экран и нажатия клавиш слушать (WIN API). Ну а раз протокол закрытый и проприентарный — значит параллельно и отправлять такую информацию на сервер разработчика. Например, сколько было скандалов со skype, о чтении директорий /etc и папки firefox.
      +1
      слишком сложно, проще заюзать truecrypt или encfs.
        0
        На сколько я понял, то тут основная идея заключается не в шифровании, а в безопасном распределении данных по разным местам. Если ты имеешь 5 нодов, а для восстановления информации тебе необходимо всего 3, то у тебя значительно повышается вероятность получения исходных данных.
          0
          Truecrypt или encfs это локальные файловые системы.
          Tahoe-LaFS это уже распределенная ФС. Список которых очень и очень обширен.

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

          Как вариант применения. Вы с друзьями создаете хранилище: Создаете ноду, выделяете для хранилища место на своем компьютере. Соседние ноды делают тоже самое. Объединяете ноды в единое хранилище. Далее пользуетесь как простым диском.
          Конечно, можно запаковать все свои фотки с паролем и разослать архивы друзьям, но здесь уже надо чтобы эти самые друзья были онлайн в момент когда эти самые данные потребуются. Здесь же за счет избыточности часть нод кластера может быть недоступна. При работе системы данные будут распределятся по нодам так, чтобы обеспечить целостность хранимого даже при потере части нод.
            0
            А я не тоже самое написал?
              0
              Когда я начал отвечать Вашего комментария еще не было ;)
          0
          Я бы не стал называть Tahoe-Lafs системой p2p. К ней больше подходит термин Grid.
            0
            The Tahoe Least-Authority Filesystem (Tahoe-LAFS) is an open source, secure, decentralized, fault-tolerant, peer-to-peer filesystem.
            Wiki
              0
              С каких пор википедия стала истиной в последней инстанции?
              Тем более, что на официальном сайте его называют storage grid http://tahoe-lafs.org/trac/tahoe-lafs/browser/trunk/docs/about.rst
              И даже здесь не видно никаких peer-to-peer.
                0
                Ну т.к. wiki открытый проект, то Вы можете своими силами подкорректировать статью на ней, чтобы она отображала правильные сведения.
              0
              О том как получить дополнительно 11Гб в Wuala
              +1
              Спасибо

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

              Самое читаемое