
Firefox недавно запустил свой сервис обмена файлами,Отправлять. Он обещает сквозное шифрование: файл для обмена шифруется в браузере отправителя и расшифровывается в браузере получателя с использованием ключа, встроенного в общий URL-адрес.
URL-адрес для обмена файлом имеет следующий формат:
https://send.firefox.com/download/03837dac3928b1d1/#lIFX1W1S2oXSwJF0QgMe_A
Я предполагаю, что одна часть URL представляет местоположение файла на серверах Mozilla, а другая — ключ шифрования. Однако из действительного URL, какую бы часть я ни изменил, я получаю ошибку «Срок действия этой ссылки истек». Таким образом, я не мог понять, была ли моя догадка верной.
В любом случае, мой вопрос в том, насколько я могу быть уверен в этом сквозном шифровании. Этот механизм умный, но я заметил, что мне удалось получить ссылку на любой из моих акций из моей учетной записи Firefox на любом устройстве. Это означает, что вся ссылка каким-то образом хранится в моей учетной записи на серверах Mozilla.
Если так, то технически возможно, чтобы Mozilla расшифровала каждый общий файл. Я что-то упускаю? Есть ли у кого-нибудь хорошее представление о том, как на самом деле работает Firefox Send и безопасно ли полагаться на этот механизм сквозного шифрования?
Большое спасибо.
решение1
Я задавался тем же вопросом и наткнулся на этот вопрос. Ну что ж, я могу попробовать провести собственное исследование.
Mozilla задокументировала используемое шифрованиездесьи если объяснить это более простыми словами:
Загрузка
- Ваше приложение/браузер генерирует ключ шифрования
- Ключ используется для генерации 3 дополнительных ключей: один для самого шифрования файла, один для метаданных и один ключ подписи.
- Если вы устанавливаете пароль, пароль и ключ шифрования объединяются безопасным образом, чтобы создать ключ подписи.
- Файл и метаданные шифруются.
- Зашифрованные данные и ключ подписи отправляются в Mozilla.
- Обратите внимание, что из-за способа генерации ключа подписи невозможно вычислить исходный ключ шифрования, использованный для генерации любого из ключей.
- Mozilla отправляет вам URL файла (без части после #) и токен. Этот токен можно использовать для удаления файла.
- Ваше приложение добавляет знак # и ключ шифрования
Загрузка
- Вы входите на страницу загрузки. Все браузеры не отправляют часть после # на сервер. (Обычно они используются для ссылок-якорей, которые ведут на другой раздел той же страницы)
- Mozilla отправляет вашему приложению «nonce» (число, используемое только один раз) или, по сути, какие-то случайные мусорные данные
- Поскольку у вас есть ключ шифрования после #, приложение сгенерирует все 3 ключа, как и при загрузке на шаге 2. Вы получите точно такие же ключи, как и загрузчик.
- Приложение подписывает предоставленный сервером одноразовый код с помощью ключа подписи.
- Приложение отправляет подписанный одноразовый код в Mozilla
- Поскольку у Mozilla также есть тот же ключ подписи, они также выполняют шаг 4 на своей стороне и ожидают, что он будет соответствовать тому, который вы отправляете. Этот шаг гарантирует, что либо
- Вы знаете правильный ключ шифрования
- или если файл защищен паролем, вы знаете пароль
- После того, как вы убедились, что знаете ключ (даже не раскрывая его серверу), Mozilla отправит вам зашифрованные метаданные.
- Приложение расшифровывает эти метаданные на вашем компьютере и показывает вам подробности.
- Вы нажимаете «загрузить»
- Приложение загружает зашифрованные файлы и расшифровывает их на вашем компьютере.
Итак, отвечая на ваши вопросы:
Я предполагаю, что одна часть URL представляет местоположение файла на серверах Mozilla, а другая — ключ шифрования. Однако из действительного URL, какую бы часть я ни изменил, я получаю ошибку «Срок действия этой ссылки истек». Таким образом, я не мог понять, была ли моя догадка верной.
Если после загрузки на шаге 6 вы не сможете доказать, что знаете правильный ключ шифрования, Mozilla откажется отправлять вам файл.
В любом случае, мой вопрос в том, насколько я могу быть уверен в этом сквозном шифровании. Этот механизм умный, но я заметил, что мне удалось получить ссылку на любой из моих акций из моей учетной записи Firefox на любом устройстве. Это означает, что вся ссылка каким-то образом хранится в моей учетной записи на серверах Mozilla.
Эта часть не написана в документе, на который я ссылаюсь. Я смотрю вокругисточники обнаружил, что они загружают список загруженных файлов на ваш аккаунт. Я полагаю, что эти данные зашифрованы с помощью процесса, похожего на шифрование файлов.
Я посмотрел вокруг и, похоже, ключ шифрования генерируется локально. Я не уверен, как ключ синхронизируется.
Если так, то технически возможно, чтобы Mozilla расшифровала каждый общий файл. Я что-то упускаю? Есть ли у кого-нибудь хорошее представление о том, как на самом деле работает Firefox Send и безопасно ли полагаться на этот механизм сквозного шифрования?
Хочу сразу предупредить, что я не эксперт по шифрованию, и вы можете спроситькрипто.seМнение по этому поводу.
Если вы спросите меня, я думаю, что процесс шифрования здесь довольно надежный, а используемые алгоритмы являются отраслевым стандартом. У Mozilla нет возможности расшифровать каждый отдельный файл без перебора каждого используемого ключа, по одному на файл.
Однако вам следует знать о дополнительных функциях, которым вы должны доверять, чтобы Mozilla выполняла свою работу:
- Пароль проверяется только сервером. Если вы случайно получили зашифрованные файлы и ключ шифрования, то вы можете расшифровать данные, не зная пароля. Обычно это не проблема, так как сервер не отправляет вам зашифрованные файлы, пока вы не докажете, что знаете пароль. Однако у самой Mozilla есть доступ к зашифрованному файлу, поэтому ключ шифрования здесь является единственной защитой.
- Учитывая, что большинство предоставляемых пользователями паролей являются слабыми, лучше сгенерировать случайный, но надежный ключ шифрования, чем использовать пароль для непосредственного шифрования данных.
- Истечение срока невозможно реализовать криптографически безопасным способом, поскольку вы не можете получить истинное текущее время в математической функции. Поэтому вам придется довериться тому, что Mozilla удалит ваши просроченные файлы.
Обратите внимание, что сервер Firefox Send с открытым исходным кодом поддерживает AWS в качестве бэкэнда хранилища. Я не уверен, что Firefox использовал в своем публичном сервисе, но если это AWS, то вам придется доверять AWS и в обоих вышеперечисленных вопросах.