Dropbox на страже конфиденциальности
Я уже довольно долго являюсь пользователем такой полезной вещи, как Dropbox. Кто не знает – это такой сервис, позволяющий синхронизировать файлы между разными компьютерами и иметь доступ к ним из любой точки мира, т.к. их копии хранятся на серверах сервиса. Это позволяет использовать Dropbox, как удаленное хранилище для бэкапов, чем многие и пользуются, и я в том числе.
В списке способностей этого дивного сервиса заявлено, что все файлы хранятся на серверах в зашифрованном виде (AES-256) и недоступны без пароля пользователя. Вот этот факт я и хочу оспорить данной заметкой.
В очередной раз забросив файл размером в несколько мегабайт в папку Dropbox’а я заметил, что он практически моментально синхронизировался с сервером, что, как минимум, странно с учетом скорости моего домашнего интернет канала (3g-gprs с довольно плохим покрытием). Тут-то и закралась в голову мысль о том, что не все здесь чисто, и данные хранятся совсем не в зашифрованном виде.
Ради проверки специально был создан файлик размером около 10 Мб и загружен в закрытую папку Dropbox-аккаунта моего друга. После чего этот же файл я сбросил в папку своего аккаунта для синхронизации. Результат был ожидаемым – файл синхронизировался за пару секунд.
Отсюда вывод, что при загрузке данных с клиентских машин проверяется наличие аналогичного файла у других пользователей, и если такой находится – он просто копируется (создается ссылка, etc.) в текущий профиль. Замечательный ход с точки зрения оптимизации использования интернет-канала и дискового пространства серверов, но в то же время он вызывает некоторые вопросы в плане конфиденциальности хранимой информации.
Для меня пока остается загадкой, какой алгоритм используется для проверки идентичности файлов (в исходники я еще не заглядывал). Если это контрольная сумма файла, то криптостоек ли алгоритм хеширования, использованный для ее вычисления? Если нет, то вполне возможна ситуация, что злоумышленник зная контрольную сумму и название чужого файла, сможет узнать его содержимое.
Даже если отбросить в сторону все параноидальные нападки на алгоритмы сравнения файлов и способы кражи чужих данных, мы приходим к выводу, что заявленного разработчиками шифрования файлов нет, что уже печально. Становится интересно, какие еще из обязательств компания выполняет только на словах.
Выбор использовать или нет услуги данного сервиса остается на совести каждого пользователя, но я для себя решил, что передавать важную или конфиденциальную информацию при помощи Dropbox’а я не буду ни за какие коврижки.
UPD. Некоторые уточнения по материалу
При проверке один и тот же файл загружался в закрытую (не shared folder) директорию в два разных аккаунта, с двух разных компьютеров. Сам файл был сгенерирован при помощи /dev/urandom и упакован в .tbz2 архив, который в конечном итоге занимал около 10 МБ.
> All files stored on Dropbox servers are encrypted (AES-256)
почему нет ? вполне возможно. Только шифруется не вагим ключом, а например уникальным ключом фирмы, или м.б. у них на каждый сервер по отдельному ключу или ещё как-то.
В конце концов, как вы ожидали доступ к файлам в публично-досутпных или расшаренных папках ?
И даже если предположить, что у ваших файлов на сервере был бы свой уникальный ключ шифрования, пусть даже у каждого файла свой отдельный – чем бы это улучшило вашу безопасность ? Ведь сервер все равно бы знал этот ключ (хотя бы чтобы копировать файл на другие ваши же компьютеры) и гипотетический взломщик сервера получил бы оступ и к файлам и к ключам.
> and are inaccessible without your account password.
а этого можно добиться и без шифрования вообще.
Я бы не cвязывал эти две части вместе, а воспринимал их как два разедльных рекламных лозунга.
> Отсюда вывод, что при загрузке данных с клиентских машин проверяется наличие аналогичного файла у других пользователей
По-моему это даже в справке где-то написано. Секрета тут нет.
Читая эту строку, я почему-то сразу подумал о методе шифрования, ставшем стандартом де-факто для всех систем электронной коммерции, соответствующих стандарту PCI-DSS:
Данные шифруются при помощи составного ключа, состоящего из пароля пользователя и секрета сайта. В результате, не введя пароль, данные расшифровать невозможно.
Как выяснилось, это не так: данные либо не шифруются вообще, либо шифруются одним общим ключом для всех пользователей сервиса.
Интересная статья. Только возникают вопросы:
1) как злоумышленник получит имя-файла + хеш этого файла НЕ имея к файлу доступа?
2) каким методом рассчитывается хеш?
3) каким именно образом злоумышленник узнает содержимое файла? Если у него будет поддельный файл с правильным размером и хешем – каким чудом DropBox решит его заменить на правильный (секретный) файл?
Разве он не посчитает, что у пользователя УЖЕ есть верный файл, м?
Хм, сорри, не понял сразу, т.е. DropBox должен посчитать, что аналогичный файл есть у другого аккаунта и создать на него линк в аккаунте злоумышленника.
Но все равно не ясно каким образом считать хеш, если алгоритм стойкий, то уязвимости, можно сказать, нет.
Надо узнать как считается хеш
Прочитал, что используется метод схожий с rsync. Считается простой (e.g. MD4) хеш кусков файла и определяются отличающиеся части. ИМХО это сводит на нет попытку подлога файла, т.к. для существования уязвимости нужно использование хеша всего (тобишь целого) файла.
Так что увы, ваша теория провалилась, можно смело хранить секреты в DropBox’е
Это происходит при обновлении ранее загруженного вами файла, а не при загрузке нового, который уже есть в аккаунте другого пользователя.
Отсюда вывод, что прежде чем сказать слово, надо знать его смысл. Даже если алгоритм хэширования не «криптостоек», по контрольной сумме можно попытаться определить содержимое лишь подбором «аналогичного» файла, например, из интернет. Другими словами, стоит наверное обратить внимание на объем данных в криптосумме, и в теле файла.
Данные действительно могут шифроваться, симметричным алгоритмом. Ключ от которого хранится в контейнере, защищённым например Вашим паролем. Для того чтобы сравнить содержимое двух файлов – совсем не обязательно получать доступ к телу файла, достаточно сравнить контрольные суммы.
Так в материале как раз речь не о том, что в дропбоксе не спросив хеши файлов сравнивают. А о том, что файлы ни разу не шифруются пользовательскими ключами. Об этом говорит то, что при попытке загрузить файл, который уже кто-то загружал, данные не будут передаваться по сети, а будут взяты из аккаунта ранее загрузившего человека.