Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР 151, АВГУСТ 2011 г.

Шифрование для Dropbox. Dropbox: синхронизация файлов — просто, но небезопасно

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

Предыстория

Девятнадцатого июня Dropbox устроил своеобразный «день открытых дверей». В течение 4 часов кто угодно мог зайти в чужой аккаунт с помощью произвольного пароля. Создатели сервиса, возможно, даже и не заметили бы проблемы, если бы информацию об уязвимости не опубликовал независимый security-исследователь (pastebin.com/yBKwDY6T). За последнее время это уже не первая щекотливая история, связанная с безопасностью файлов, которые пользователи со всего мира так охотно доверяют облачному хранилищу Dropbox.

Тут надо напомнить, что с самого начала существования сервиса разработчики заверяли пользователей, что ответственно подходят к безопасности данных. Так, все файлы во время синхронизации передаются исключительно по защищенному SSL-соединению, а хранятся на сервере в зашифрованном виде (AES-256). Изменив недавно пользовательское соглашение, те же самые люди недвусмысленно дали понять, что лишь ограничивают доступ к файлам для своих сотрудников, но при появлении необходимости, в том числе по запросу правоохранительных органов, Dropbox непременно предоставит доступ к аккаунту любого юзера. Вот такое шифрование.

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

Поднимаем EncFS

Справедливости ради стоит сказать, что у сервиса есть официальный wiki (wiki.dropbox.com), где приведены конкретные советы по тюнингу безопасности. Железобетонная правда заключается в том, что данные необходимо шифровать на локальной машине, а в облако их передавать уже в закриптованном виде. В частности, предлагается разместить в папке Dropbox’а контейнер TrueCrypt или FreeOTFE и уже внутри него хранить все конфиденциальные документы. Метод действенный — не поспоришь: даже если аккаунт будет скомпрометирован, злоумышленник не сможет расшифровать данные. И все бы было хорошо, если не одно «но». При таком подходе можно забыть о рациональной синхронизации файлов: при изменении любого документа будет синхронизироваться весь криптоконтейнер целиком, какого бы размера он ни был (например, 1 Гб). К тому же, в этом случае теряется важная опция Dropbox’а, позволяющая откатить любые изменения и вернуться к произвольной версии файла.

К счастью, более изящное решение предлагается все в том же wiki — использовать file-by-file-шифрование, то есть применять криптографию для каждого из файлов в отдельности. Для этого идеально подходит EncFS, вирту альная криптографическая файловая система. При монтировании EncFS указывается директория-источник (исходная директория с зашифрованными файлами, которая может располагаться в Dropbox’е) и точка монтирования. После монтирования каждому файлу в директории-точке монтирования соответствует определенный файл из зашифрованной директории. Таким образом, ты работаешь с файлами в открытом виде, а EncFS прозрачно размещает их зашифрованные версии внутри Dropbox’а. Поскольку каждый файл криптуется в отдельности, Dropbox может синхронизировать изменения инкрементально для каждого из них. Это очень добротная технология, которая давно используется под Linux’ом и основана на технологии FUSE (Filesystem in Userspace), позволяющей программистам создавать виртуальные файловые системы. Несмотря на свои корни, ее сейчас можно успешно использовать как под Mac OS X, так и Windows. Начнем с последней.

Windows

После неприятной истории с системой авторизации Dropbox предприимчивые немецкие ребята оперативно зарелизили утилиту BoxCryptor (www.boxcryptor.com), которая создает в системе виртуальный криптографический диск. Каждый помещенный на него файл автоматически шифруется с использованием стандарта AES-256.

Физически зашифрованные данные размещаются в произвольной директории, например, в папке Dropbox, в то время как на виртуальном диске они находятся в открытом виде, и к ним без проблем можно обратиться из любого приложения. Разработчики поступили очень мудро и не стали изобретать велосипед, а просто реализовали основные возможности EncFS для использования под Windows. И пусть BoxCryptor поддерживает пока не все возможности технологии, но этого вполне достаточно для надежной защиты данных.

Приложение после установки автоматически определяет папку, используемую Dropbox’ом, и предлагает разместить в ней директорию с зашифрованными файлами. Для шифрования данных тебе необходимо придумать парольную фразу, а также выбрать букву для диска, на котором будут располагаться файлы в открытом виде. Если ты не хочешь, чтобы данные без твоего ведома находились в открытом виде, пароль можно не сохранять и вводить его каждый раз, когда ты будешь монтировать диск. Поставив галку напротив «Advanced Mode», ты получишь доступ к некоторым тонким настройкам BoxCryptor. Это в частности может потребоваться, если есть необходимость использовать возможность Dropbox’а для отката к предыдущей версии файла.

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

С этого момента ты должен увидеть директорию BoxCryptor внутри своего Dropbox’а, а в системе должен появиться виртуальный диск (у меня — X:). Теперь у тебя в Dropbox’е есть папка, где ты можешь хранить конфиденциальные файлы. Тут важно запомнить два важных правила. Первое — никогда не сохраняй файлы напрямую в директорию BoxCryptor, это место, где данные хранятся в зашифрованном виде (и в таком же виде синхронизируются с облаком). Поэтому работать с документами надо через тот самый виртуальный диск. И второе — никогда не удаляй из папки BoxCryptor файл encfs6.xml. В нем находится важная для EncFS информация, которая необходима для того, чтобы дешифровать данные. В бесплатной версии программы можно создать логический раздел, объемом не более двух гигабайт, то есть ровно такого же раздела, сколько по умолчанию предоставляет Dropbox. На случай, если тебя это ограничение не устраивает, и деньги платить не хочется, есть открытая реализация EncFS для Windows — encfs4win (gitorious.org/encfs4win). В ней, само собой, никаких ограничений нет.

В основе, как и в случае с BoxCryptor, лежит библиотека Dokan (dokandev.net), которая является аналогом FUSE под Windows и необходима для монтирования в системе сторонних файловых систем.

Linux

Во многих дистрибутивах Linux все необходимое для использования EncFS встроено по умолчанию, но это не всегда упрощает задачу. Важно использовать самую свежую версию разработки (>= 1.7), в которой был исправлен ряд ошибок. А во многих дистрибутивах, к сожалению, поставляется более старый релиз (чаще всего 1.6). Это, к примеру, касается Ubuntu 10.10, которая установлена у меня на одном из ноутбуков. Большой проблемы здесь нет. Нужно лишь установить новую версию EncFS и для удобства работы с ней еще GUI-утилиту Cryptkeeper:

sudo apt-get install encfs cryptkeeper

После окончания установки мы можем запустить Cryptkeeper черезменю «Applications - System Tools - Cryptkeeper» и импортироватьзашифрованную директорию:

  1. В области уведомлений выбираем «Cryptkeeper - Import EncFS folder».
  2. Далее указываем директорию, где находятся зашифрованные файлы (то есть папку BoxCryptor’а).
  3. И определяем желаемую точку монтирования, через которую мы сможем обращаться к данным в открытом виде.

После этого в меню Cryptkeeper появится пункт для быстрого подключения тома EncFS: например, «Cryptkeeper > /home/step/Documents/Safe». После ввода пароля в системе появится необходимый нам том с расшифрованными файлами. Можно было обойтись и без всяких GUI-утилит, просто подключив EncFS-том в консоли:

encfs ~/Dropbox/BoxCryptor/ ~/BoxCryptor

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

Mac OS X

Установка EncFS под Mac OS X, пожалуй, сложнее всего реализуется из-за необходимости инсталлировать дополнительные инструменты. Но это все равно не займет много времени, а установленные инструменты все равно еще не раз пригодятся в работе. Главная загвоздка тут в том, что все распространяемые бинарники EncFS для макоси безнадежно устарели, поэтому нам придется все с\обирать вручную.

Порядок действий здесь такой:

1. Чтобы сразу обзавестись компилятором и другими необходимыми инструментами для сборки EncFS, лучше всего установить пакет разработчика. XCode(developer.apple.com). Идеально подойдет бесплатная 3-я версия.

2. Далее потребуется MacFUSE (code.google.com/p/macfuse), портированная под Mac OS X версия проекта FUSE, который в свою очередь использует EncFS. Просто запускаем загруженный MacFUSE.pkg, и установщик все сделает сам.

3. Далее можно было бы установить уже и сам EncFS, но так как это проще всего сделать через менеджер пакетов (а конкретно Homebrew), то придется заинсталлить и его:

ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"

4. Вот теперь мы можем загрузить исходники EncFS и собрать их у себя на компьютере. Homebrew сделает все за нас, подгрузив все необходимые зависимости (не зря же мы его ставили):

brew install encfs

5. Все — EncFS в системе! Можно зайти в терминал и примонтировать к системе каталог BoxCryptor’а (чаще всего это ~/Dropbox/BoxCryptor) в ту папку, где будут располагаться файлы в открытом виде (скажем, ~/ Dropbox/BoxCryptor):

encfs ~/Dropbox/BoxCryptor ~/BoxCryptor

От работы в консоли избавит отличная GUI-утилита MacFusion (www.macfusionapp.org) с подключенным плагином для поддержки EncFS (thenakedman.wordpress.com/encfs).

Выбираем альтернативу

BoxCryptor и EncFS, в принципе, не единственная разработка, предлагающая дополнительный слой шифрования поверх Dropbox. Аналогичный функционал (с шифрованием по AES-256) предлагает также SecretSync (getsecretsync.com/ss). На официальном сайте проекта сейчас доступны версии для Windows и Linux, а релиз для OS X обещается в самом ближайшем будущем. Правда, написан клиент на Java, а я при всем своем уважении к этому языку программирования, очень не любою реализованные с его помощью десктопные приложения.

Так что можно сказать, что BoxCryptor повезло :). Попробуем теперь посмотреть на проблему с другой стороны. Раз сам сервис не выполняет те обязанности, которые мы от него ожидаем, то может быть его просто поменять на что-то другое? Задача, как ни крути, не уникальна — есть целый ряд проектов, предлагающих синхронизацию файлов между разными компьютерами и устройствами, но со значительно большим упором на безопасность данных.

Один из наиболее нашумевших из них — Wuala (www.wuala.com), который позиционируется создателями как «безопасное онлайнхранилище». Сервис в последнее время агрессивно развивается и предлагает практически все те же самые возможности, что есть у Dropbox’а. Уже сейчас доступны клиенты для Windows, Linux, Mac, а также iPhone и Android.

Для аутентификации Wuala использует стандарт RSA-2048, а для шифрования файлов — AES-128. Безопасность добавляет еще и распределенный подход сервиса к хранению ресурсов. Дело в том, что в основе сервиса лежит технология, снижающая затраты серверов благодаря использованию простаивающих ресурсов. Когда в хранилище добавляется новый файл, он шифруется и разбивается на большое количество фрагментов. Угадай, где размещаются эти фрагменты? В облаке и... компьютерах других пользователей. Да-да, сервис предлагает юзерам программу «торговли» своими мощностями. Все честно: если пользователь поделится частью своего диска с сетью Wuala, он получает дополнительное пространство в облаке (для этого необходимо, чтобы компьютер был включен не менее 4 часов в день).
Таким образом, жесткие диски Wuala-юзеров составляют распределенную сеть, которая используется сервисом для улучшения скорости загрузки файлов, доступности и сокращения своих расходов. Чтобы гарантировать, что данные никогда не будет утеряны, применяются алгоритмы коррекции ошибок и серьезная избыточность. На старте пользователю бесплатно выделяется 1 Гб, но он может прокачать аккаунт за счет реферальной программы, привлекая других людей (так же, как в Dropbox’е), а также «продажи» своего дискового пространства.По правде говоря, полностью перейти на Wuala я пока не решился.

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

Приложение для мобильного телефона, хотя и предоставляет доступ к файлам в облаке, но пока сильно ограничено в возможностях. А интерфейс для доступа к файлам через браузер реализован через тормозной Java-апплет. Поэтому связка Drobox+BoxCryptor — мой выбор на данный момент. Все работает, все привычно, все безопасно — короче говоря, мне нравится.

Доступ к шифрованным файлам через веб

При использовании BoxCryptor ты уже не сможешь просмотреть защищенные файлы через веб. Точнее говоря, скачать-то их можно, но только в зашифрованном виде. Выручить может Portable-версия BoxCryptor, которая поможет расшифровать загруженные из облака файлы. Правда, если ты не отключил шифрование имен файлов, то найти нужные документы может быть ой как непросто. Имей это в виду. Вообще Portable-версия BoxCryptor предназначена для использования в тех ситуациях, когда у пользователя ограничены права в системе. Она, к слову, отлично ладит с перемещаемой сборкой Dropbox’а — DropboxPortableAHK (dropportable.ho.am).

Хроника фейлов Dropbox

7 апреля — исследователь Дерек Ньютон рассказал в своем блоге (bit.ly/dropbox_fail) некоторые подробности об авторизации Dropbox. Оказалось, всю информацию для аутентификации программа хранит в файле config.db. Он находится в %APPDATA%\Dropbox и представляет собой базу данных SQLite.

Среди многих других полей одно из них — host_id — наиболее интересное. Оно определяется клиентом после первой авторизации и не меняется со временем. И вот в чем засада. Его значение никак не привязано к системе. Скопировав config.db на другую машину, злоумышленник легко получает доступ к данным чужого аккаунта. Без уведомления пользователя! Более того, даже если юзер сменит логин и пароль, тоже ничего не изменится — host_id все равно останется валидным. На данный момент идентификатор привязывается к конкретному устройству и может быть отозван через веб-интерфейс.

19 апреля — Dropbox меняет пользовательское соглашение, напрямую заявляя, что при необходимости может расшифровать файлы пользователей и предоставить их для следствия по законам США.

26 апреля — на GitHub’е появляется открытый проект Dropship (github.com/driverdan/dropship), позволяющий быстро получить в своем аккаунте любой файл, который есть в облаке Dropbox. Все, что необходимо, — знать его хэш. С автором — Владимиром ван дер Лааном — тут же связался главный технический директор сервиса и вежливо попросил убрать исходники. Пользователи программы отреагировали созданием многочисленных зеркал проекта на github и на самом Dropbox. В течение короткого времени им также пришла просьба представителя Dropbox о немедленном удалении файлов проекта.

19 июня — в работу сервиса был запущен релиз с серьезной уязвимостью в системе авторизации. В результате любой пользователь мог зайти в чужой аккаунт, не зная пароля. Dropbox оправдывается, что за время, которое ушло на исправления уязвимости, вход осуществляли менее 1% пользователей.

Содержание
загрузка...
Журнал Хакер #151Журнал Хакер #150Журнал Хакер #149Журнал Хакер #148Журнал Хакер #147Журнал Хакер #146Журнал Хакер #145Журнал Хакер #144Журнал Хакер #143Журнал Хакер #142Журнал Хакер #141Журнал Хакер #140Журнал Хакер #139Журнал Хакер #138Журнал Хакер #137Журнал Хакер #136Журнал Хакер #135Журнал Хакер #134Журнал Хакер #133Журнал Хакер #132Журнал Хакер #131Журнал Хакер #130Журнал Хакер #129Журнал Хакер #128Журнал Хакер #127Журнал Хакер #126Журнал Хакер #125Журнал Хакер #124Журнал Хакер #123Журнал Хакер #122Журнал Хакер #121Журнал Хакер #120Журнал Хакер #119Журнал Хакер #118Журнал Хакер #117Журнал Хакер #116Журнал Хакер #115Журнал Хакер #114Журнал Хакер #113Журнал Хакер #112Журнал Хакер #111Журнал Хакер #110Журнал Хакер #109Журнал Хакер #108Журнал Хакер #107Журнал Хакер #106Журнал Хакер #105Журнал Хакер #104Журнал Хакер #103Журнал Хакер #102Журнал Хакер #101Журнал Хакер #100Журнал Хакер #099Журнал Хакер #098Журнал Хакер #097Журнал Хакер #096Журнал Хакер #095Журнал Хакер #094Журнал Хакер #093Журнал Хакер #092Журнал Хакер #091Журнал Хакер #090Журнал Хакер #089Журнал Хакер #088Журнал Хакер #087Журнал Хакер #086Журнал Хакер #085Журнал Хакер #084Журнал Хакер #083Журнал Хакер #082Журнал Хакер #081Журнал Хакер #080Журнал Хакер #079Журнал Хакер #078Журнал Хакер #077Журнал Хакер #076Журнал Хакер #075Журнал Хакер #074Журнал Хакер #073Журнал Хакер #072Журнал Хакер #071Журнал Хакер #070Журнал Хакер #069Журнал Хакер #068Журнал Хакер #067Журнал Хакер #066Журнал Хакер #065Журнал Хакер #064Журнал Хакер #063Журнал Хакер #062Журнал Хакер #061Журнал Хакер #060Журнал Хакер #059Журнал Хакер #058Журнал Хакер #057Журнал Хакер #056Журнал Хакер #055Журнал Хакер #054Журнал Хакер #053Журнал Хакер #052Журнал Хакер #051Журнал Хакер #050Журнал Хакер #049Журнал Хакер #048Журнал Хакер #047Журнал Хакер #046Журнал Хакер #045Журнал Хакер #044Журнал Хакер #043Журнал Хакер #042Журнал Хакер #041Журнал Хакер #040Журнал Хакер #039Журнал Хакер #038Журнал Хакер #037Журнал Хакер #036Журнал Хакер #035Журнал Хакер #034Журнал Хакер #033Журнал Хакер #032Журнал Хакер #031Журнал Хакер #030Журнал Хакер #029Журнал Хакер #028Журнал Хакер #027Журнал Хакер #026Журнал Хакер #025Журнал Хакер #024Журнал Хакер #023Журнал Хакер #022Журнал Хакер #021Журнал Хакер #020Журнал Хакер #019Журнал Хакер #018Журнал Хакер #017Журнал Хакер #016Журнал Хакер #015Журнал Хакер #014Журнал Хакер #013Журнал Хакер #012Журнал Хакер #011Журнал Хакер #010Журнал Хакер #009Журнал Хакер #008Журнал Хакер #007Журнал Хакер #006Журнал Хакер #005Журнал Хакер #004Журнал Хакер #003Журнал Хакер #002Журнал Хакер #001