Насколько безопасно сквозное шифрование Firefox Send?

Насколько безопасно сквозное шифрование Firefox Send?

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

URL-адрес для обмена файлом имеет следующий формат:

https://send.firefox.com/download/03837dac3928b1d1/#lIFX1W1S2oXSwJF0QgMe_A

Я предполагаю, что одна часть URL представляет местоположение файла на серверах Mozilla, а другая — ключ шифрования. Однако из действительного URL, какую бы часть я ни изменил, я получаю ошибку «Срок действия этой ссылки истек». Таким образом, я не мог понять, была ли моя догадка верной.

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

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

Большое спасибо.

решение1

Я задавался тем же вопросом и наткнулся на этот вопрос. Ну что ж, я могу попробовать провести собственное исследование.

Mozilla задокументировала используемое шифрованиездесьи если объяснить это более простыми словами:

Загрузка

  1. Ваше приложение/браузер генерирует ключ шифрования
  2. Ключ используется для генерации 3 дополнительных ключей: один для самого шифрования файла, один для метаданных и один ключ подписи.
    • Если вы устанавливаете пароль, пароль и ключ шифрования объединяются безопасным образом, чтобы создать ключ подписи.
  3. Файл и метаданные шифруются.
  4. Зашифрованные данные и ключ подписи отправляются в Mozilla.
    • Обратите внимание, что из-за способа генерации ключа подписи невозможно вычислить исходный ключ шифрования, использованный для генерации любого из ключей.
  5. Mozilla отправляет вам URL файла (без части после #) и токен. Этот токен можно использовать для удаления файла.
  6. Ваше приложение добавляет знак # и ключ шифрования

Загрузка

  1. Вы входите на страницу загрузки. Все браузеры не отправляют часть после # на сервер. (Обычно они используются для ссылок-якорей, которые ведут на другой раздел той же страницы)
  2. Mozilla отправляет вашему приложению «nonce» (число, используемое только один раз) или, по сути, какие-то случайные мусорные данные
  3. Поскольку у вас есть ключ шифрования после #, приложение сгенерирует все 3 ключа, как и при загрузке на шаге 2. Вы получите точно такие же ключи, как и загрузчик.
  4. Приложение подписывает предоставленный сервером одноразовый код с помощью ключа подписи.
  5. Приложение отправляет подписанный одноразовый код в Mozilla
  6. Поскольку у Mozilla также есть тот же ключ подписи, они также выполняют шаг 4 на своей стороне и ожидают, что он будет соответствовать тому, который вы отправляете. Этот шаг гарантирует, что либо
    • Вы знаете правильный ключ шифрования
    • или если файл защищен паролем, вы знаете пароль
  7. После того, как вы убедились, что знаете ключ (даже не раскрывая его серверу), Mozilla отправит вам зашифрованные метаданные.
  8. Приложение расшифровывает эти метаданные на вашем компьютере и показывает вам подробности.
  9. Вы нажимаете «загрузить»
  10. Приложение загружает зашифрованные файлы и расшифровывает их на вашем компьютере.

Итак, отвечая на ваши вопросы:

Я предполагаю, что одна часть URL представляет местоположение файла на серверах Mozilla, а другая — ключ шифрования. Однако из действительного URL, какую бы часть я ни изменил, я получаю ошибку «Срок действия этой ссылки истек». Таким образом, я не мог понять, была ли моя догадка верной.

Если после загрузки на шаге 6 вы не сможете доказать, что знаете правильный ключ шифрования, Mozilla откажется отправлять вам файл.

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

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

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

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

Хочу сразу предупредить, что я не эксперт по шифрованию, и вы можете спроситькрипто.seМнение по этому поводу.

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

Однако вам следует знать о дополнительных функциях, которым вы должны доверять, чтобы Mozilla выполняла свою работу:

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

Обратите внимание, что сервер Firefox Send с открытым исходным кодом поддерживает AWS в качестве бэкэнда хранилища. Я не уверен, что Firefox использовал в своем публичном сервисе, но если это AWS, то вам придется доверять AWS и в обоих вышеперечисленных вопросах.

Связанный контент