BitTorrent Sync — усиленно думаем о безопасности наших данных

ИменнойЯ уже несколько раз писал по поводу технологий BitTorrent для организации частной передачи файлов между устройствами. Технология мне нравится, и я постоянно пользуюсь BTSync в своей частной и рабочей жизни. Как известно, передача файлов между компьютерами или другими устройствами через BTSync — безопасна. По крайней мере так заявляет компания разработчик. Дескать все данные шифруются и даже если их каким-то чудом получится перехватить, то расшифровать их и добраться до ценного содержимого в разумное время будет невозможно. Проверить подобные заявления нельзя, поскольку используемый для передачи протокол закрыт и его подробное описание отсутствует.

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

Капля теории

Для начала немного теории, ведь без нее никуда если требуется именно понимание предмета, а не просто глупое копирование команд из инструкции, размещенной на страницах никому неизвестного блога.

Ключи BTSync

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

В документации на Sync упоминается о возможности существования двух типов ключей. Первый тип и он же основной — стандартный ключ (standard key). Второй тип — пользовательский нестандартный ключ (custom key). Однако, мне так и не удалось получить внятного понимание того, что же такое есть custom key. Возможно, что данная функция будет доступна в будущих версиях BTSync или же она успела устареть и ей никто не пользуется.

Но вернемся к стандартным ключам. Их генерирует программное обеспечение, сам BTSync, когда требуется создать новую папку для обмена данными. Ключ — это последовательность символов, включающая латинские буквы от A до Z и цифры от 2 до 7. Длинна ключа составляет 32 символа для всех ключей за исключением ключей «Только для чтения», которые имеют длину в 65 символов. Обычный ключ это 20 байт данных закодированных по алгоритму Base32.

Типы ключей BTSync

Первый символ в каждом ключе определяет тип ключа. На момент написания статьи (апрель 2016) существует семь типов ключей:

А — стандартный ключ с доступом на чтение и запись.
B — ключ с доступом только на чтение. Генерируется автоматически на основе А-ключа.
C — одноразовый ключ с доступом только на чтение. Генерируется автоматически на основе А- или B-ключей. Ключ существует определенное время, затем утилизируется (использовать его будет уже нельзя).
D — стандартный ключ с доступом на чтение и запись с возможностью передачи данных на зашифрованные точки BTSync (применяется для проброски данных через промежуточные сервера).
E — ключ с доступом только на чтение с возможностью получать и расшифровывать данные с зашифрованных точек BTSync (там, где применяются D- и F-ключи). Рассчитывается автоматически из D-ключа.
F — ключ для шифрованной передачи. Позволяет только осуществлять обмен данными без возможности расшифровки имен файлов или их содержания. Генерируется автоматически по E- и F-ключам.
R — выведенный из оборота ключ с доступом только для чтения. До сих пор применяется с целью поддержания обратной совместимостью со старыми версиями, является аналогом B-ключа.

Генерация ключей BTSync

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

  • Пара ассиметричных ключей, основанных на А-ключе. Пара используется для подписи и верификации хешей файлов.
  • B-ключ основанный на публичном ключе из предыдущего пункта.
  • Идентификатор Share ID основанный на B-ключе.
  • Ключ для шифрования трафика, генерируемый для каждой сессии передачи данных. Основывается на B-ключе.

Все ключи и идентификаторы создаются при помощи криптографических алгоритмов ED25519 и SHA3. Алгоритмы сложные и пока надежные. Будут ли они достоверно скомпрометированы квантовыми вычислителями — покажет время, сейчас же они вполне безопасны.

Здесь сразу же стоит обратить внимание на то, что при ручной смене ключа на одном устройстве (а поменять можно, понятное дело А-ключ), на других устройствах он сам не поменяется.

My Device и Identity

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

My Device или «Мое устройство» — специальный режим, в котором все каталоги между устройствами входящими в My Device становятся равнодоступными. Применяется для облегчения обмена файлами между своими устройствами. Например, в «Мое устройство» у меня добавлено три компьютера. На одном я добавил несколько папок для синхронизации. Автоматически эти же папки будут доступны и на всех остальных устройствах. В этом случае не потребуется обмениваться ключами между устройствами, все произойдет автоматически.

Угрозы

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

Вирусы и сбои

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

И вот, ваше частное облако, собранное из нескольких ПК, мобильных, планшетов и парочки NAS теряет свои данные из-за того, что файлы на одном из NAS-ов кто-то покрошил в винегрет. И все изменения разнеслись по всем вашим устройствам. Произойдет это совершенно легитимно и в полном соответствии с алгоритмами BTSync.

Дыры в алгоритмах для спецслужб

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

На заре компьютерной криптографии именно про спецслужбы ходили байки, которые могут оказаться вполне реальными, проверить-то никак, что любые криптографические алгоритмы имеют лазейки, через которые обладатели тайных знаний могут с легкостью расшифровать все зашифрованное. Более того, над этими лазейками, вернее алгоритмами шифрования работали математики специально для спецслужб. И только алгоритмы с лазейками принимались в качестве стандартов. Байки байками, но кто знает, может быть и правда, американцы с легкостью раскрывают свой AES, а ГОСТ алгоритм шифрования россияне.

Проблема с генерацией начальных показаний для алгоритмов

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

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

Современные компьютеры, телефоны, сетевые накопители и прочая цифровая техника есть ни что иное, как всего лишь большие и мощные калькуляторы. И для большинства алгоритмов шифрования требуется задать первоначальные данные, на основе которых в дальнейшем будут шифроваться другие данные. Но где их взять в полностью детерминированном мире калькулятора-переростка? Это только на первый взгляд кажется, что в компьютере есть куча параметров, которые могут быть установлены случайным образом. А на самом же деле, все эти параметры конечны и могут быть очень быстро проверены методом банального перебора.

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

Первоначальная передача ключа

Если взлом зашифрованных файлов хитрым способом угроза скорее для очень узкого круга лиц, то обычный пользователь должен быть обеспокоен больше банальной кражей первичного ключа при его передаче другому лицу. Вот, задумали вы обмениваться файлами со своим другом, живущем в соседнем городе. Для начала обмена, вам необходимо передать ему каким-либо образом А- или B-ключ. Как это сделать?

Послать ключ SMS-кой? Отправить по электронной почте? Выслать через WhatsUP! или FaceBook? Увы, все эти способы потенциально ненадежны по той причине, что самое ценное в зашифрованной передаче вы и компрометируете собственными руками. Злоумышленнику достаточно получить лишь ключ и в любой момент он сможет обрести доступ ко всем вашим файлам из папки для обмена. А поскольку зачастую BTSync работает без какого-либо надзора со стороны пользователя вообще, то участвовать в обмене злоумышленник может очень долго. А пользователь будет гадать, что же это за узел такой с именем Retracker появился в списке пиров для папки.

Угон ключа с конечного или промежуточного пункта

На ряду с проблемой кражи ключа при передаче есть еще одна, гораздо более серьезная проблема с безопасностью в BTSync. Вернее, это проблема даже не безопасности в BTSync, а безопасности операционной системы, в которой он работает и безалаберности пользователя или системного администратора.

Не задумывались ли вы о том, где BTSync хранит все те ключи, что были описаны выше? Вот вы включили компьютер, запустился BTSync и начался процесс синхронизации. Где BTSync взял ключи для синхронизации? Верно. Они хранятся на жестком диске того компьютера на котором запущен BTSync.

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

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

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

Безопасная передача ключа

Начнем с того, каким образом можно безопасно передать ключ своему партнеру на удаленное расстояние. Конечно, можно воспользоваться Почтой России и переслать распечатанный QR-код в обычном бумажном письме, но на такие жертвы навряд ли кто-то пойдет в здравом уме и твердой памяти, поскольку есть способы проще и быстрее.

В BTSync реализована система способная, по замыслу разработчиков, безопасно соединить два устройства на расстоянии. Речь идет о передаче ссылки, а не ключа. В интерфейсе современных версий BTSync есть возможность поделиться доступом несколькими способами: просто скопировать ключ, отобразить QR-код для сканирования мобильным устройством или же сгенерировать ссылку.

И именно в ссылке порылась изюминка. По сути ссылка выглядит как обычный URL с некоторыми параметрами. При генерации ссылки можно задать нужные параметры доступа, в том числе и обязательное подтверждение подключаемого Identity. Более того, ссылку можно использовать только один раз и подключить одной ссылкой только одно устройство.

Получив по электронной почте ссылку, пользователь нажимает на нее и… и если у него установлен BTSync, то параметры ссылки передадутся прямо в него, а если нет, то он перейдет на веб-сайт, где ему и предложат установить BTSync. Затем, активировав ссылку он получит новые ключи от отправителя по защищенному каналу, установленному при помощи ссылки, для нормальной работы с папкой обмена. А в случае включенного подтверждения владелец еще подумает, глядя на Identity, давать ли ему доступ или нет.

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

Безопасность на стороне конечных узлов BTSync

А вот тут все не так радужно и безопасно, как может показаться. Уязвимыми местами у BTSync являются каталог .SyncUser и файл sync.dat. И в том и в другом хранятся ключи. В открытом виде и доступны для любого. Располагаются эти файлы в каталоге BTSync. В Windows системах этот каталог находится обыкновенно в %AppData%/Roaming/ButTorrent Sync каталоге.

Опасное место по компрометации данных

Опасное место по компрометации данных

Следовательно, нужно защитить от несанкционированного доступа и каталог и файл. Сделать это можно несколькими способами:

  • Запускать BTSync отдельной сессией, в которую нет доступа у текущего пользователя. Правда не на всех операционных системах эта возможность доступна.
  • Зашифровать каталог средствами операционной системы. В Windows это может быть BitLocker, а в других операционных системах могут применяться встроенные средства шифрования для пользовательских каталогов. Не стоит забывать и про шифрование накопителей в мобильных устройствах, на которых тоже может работать BTSync.

Помимо перечисленных выше мер, стоит обязательно включить парольный вход в систему, будь то стационарный компьютер, ноутбук или же смартфон. Защита должна присутствовать. По крайней мере не стоит забывать про арест Уильяма Ульбрихта, администратора печально известного Silk Road. Арестовали Уильяма как раз в тот момент, когда он пользовался своим ноутбуком. Коварные агенты отвлекли Ульбрихта и выхватили у него прямо из-под носа ноутбук со всеми открытыми сессиями. Успей он закрыть крышку и у обвинения не осталось бы самой главной и основной улики против Уильяма. Ведь у него были и пароли, и шифрование.

Плюем на несанкционированные изменения на промежуточных узлах

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

Теперь вне зависимости от статуса планшет и компьютер будут синхронизироваться друг с другом посредством третьего участника. Но представим, что некий малолетний хакер, воспользовался уязвимостью вашего NAS и пробрался в его файловую систему, попутно повредив десяток другой ваших файлов. Катастрофа? Да, именно она. Ведь в случае использования синхронизации с режимом доступа на чтение и запись, все изменения, сделанные с файлами на NAS, уйдут на остальные синхронизируемые устройства.

Варианты ключей при использовании с BTSync

Варианты ключей при использовании с BTSync

Уйти от этой ситуации можно не просто, а очень просто. Достаточно на NAS использовать не А-ключ, а B-ключ. Тогда, любые изменения, сделанные на NAS не через синхронизацию, не будут реплицированы на остальные подключенные устройства, а синхронизация между устройствами будет происходить как и прежде. Решение очень элегантное.

Но эту элегантность можно улучшить. Если вместо B-ключа применить на NAS F-ключ, то данные на NAS будут защищены не только от изменения, но и от несанкционированного доступа, поскольку будут надежно зашифрованными. Более того, применение B- или F-ключей может быть осуществлено более чем на одном вашем промежуточном узле, они будут продолжать осуществлять синхронизацию в том числе и между собой.

Использование F-ключа может быть также рассмотрено и как альтернатива зашифрованной файловой системе или же для надежного и безопасного файлового резервного копирования. Главное тут не потерять ключи.

Выводы

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



BitTorrent Sync — усиленно думаем о безопасности наших данных: 2 комментария

    1. kvv Автор записи

      Спасибо, VK пока не поддерживается системой идентификации Вордпресса.

Добавить комментарий