Перейти к содержимому

Глоссарий

Шифрование при хранении

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

Шифрование при хранении это защита данных там, где они лежат: копия файла не стоит ничего для того, у кого нет ключа.

Три вопроса решают дело

Само по себе это словосочетание не значит почти ничего. Настоящую защиту от наклейки отделяют три ответа.

  • Где живёт ключ

    Внутри программы, внутри операционной системы или только у вас в голове. Копирование файла переживают лишь последние два.

  • Что именно закрыто

    Одно поле, один файл или вся папка. Закрытая библиотека значит мало, если то же значение лежит открытым по соседству.

  • Что бывает без ключа

    Записать значение как есть честно. Записать его как есть под пометкой «закрыто» хуже, чем просто открытым текстом.

Замок на каждой системе

Пароли прокси, пароль входа, который несёт профиль, и пароль от файлов синхронизации на Windows закрывает сама система ключом вашей учётной записи Windows. На macOS они закрыты ключом, который лежит внутри самой программы, а на Linux записаны как набраны.

Ключ, уехавший внутри программы, есть у каждого, кто её скачал, и замок на macOS держится именно на таком ключе. Поэтому на macOS и Linux тот, у кого есть копия файла, эти значения прочитает.

Когда замок не защищает

На Linux значение пишется как есть, и никакая пометка не утверждает обратного. Пометка защиты над незащищённым значением это единственный по-настоящему плохой исход, потому что она мешает вам принять свои меры. Замок на macOS это ровно такой случай, потому что ключ от него лежит внутри самой программы.

Закрытый пароль, который не открылся, остаётся лежать закрытым, а не выбрасывается: пароль входа, пароль от файлов синхронизации и пароль прокси в библиотеке, в заготовке и в профиле. Одна неудачная попытка открыть стоит тогда одного чтения, а не самого значения. У самого прокси программа пишет, что пароль нужно вписать заново.

Архив несёт свой замок с собой

Профиль, переезжающий вместе со своей сессией, едет одним зашифрованным архивом, и руками, и через папку, которую и так синхронизирует ваше облако. Шифр это AES-256-GCM, а ключ растягивается из вашего пароля через scrypt.

Архив закрыт и от чтения, и от подделки, поэтому неверный пароль возвращается честным отказом, а не мусором, похожим на сессию. Сам пароль в папку не попадает никогда.

Права это не шифрование

Файлы с секретами пишутся правами только для хозяина, и на macOS и Linux эти права уезжают вместе с копией. На Windows они не значат ничего, и папку закрывает там учётная запись, внутри которой она лежит.

Права отвечают на вопрос, кому можно открыть файл. Шифрование отвечает, чего этот файл стоит после того, как его уже открыли, и резервная копия задаёт именно второй вопрос.

С чем это путают

  • Шифрование в пути

    Оно бережёт сообщение между двумя машинами и кончается ровно тогда, когда сообщение записали на диск.

  • Шифрование всего диска

    Оно бережёт выключенную машину и не даёт ничего после того, как вы вошли и диск открыт.

  • Хеширование

    Хеш нарочно односторонний: это верно для пароля, который читать назад никому не нужно, и бесполезно для того, который нужен.

Чего это не делает

  • Пока машина открыта, это не делает ничего. Значение в работе лежит в памяти открытым, и браузер с запущенным профилем тоже.
  • Это не закрывает весь каталог профиля. Что пишет туда браузер, принадлежит браузеру и живёт по его правилам, а не по нашим.
  • На экране не говорится, закрыли значение или нет и чем. В файле значение, закрытое на macOS, выглядит так же, как закрытое на Windows, хотя ключ к нему лежит внутри самой программы.
  • Потерянный пароль не восстанавливается. Архивы в вашей папке остаются закрытыми, и второго ключа к ним нет нигде.
  • Экспорт профилей в файл кнопкой «Экспорт» это вторая дорога, и этот файл не шифруется. Если нажать «Включить секреты», в нём читаемо лежат пара входа, ключ одноразового кода и пароли прокси.

Проверить

За каждым утверждением выше стоит файл, а за большинством ещё и стенд, который краснеет, когда утверждение перестаёт быть правдой.

Файлы с секретами пишутся правами только для хозяина и целиком
apps/desktop/src/lib/secureFile.js · apps/desktop/test/secrets-on-disk.js
Чем закрыты пароль входа и пароль прокси на каждой системе, и пароль, который не открылся, не стирается
apps/desktop/src/lib/proxies.js · apps/desktop/src/lib/sealedPassword.js · apps/desktop/test/login-in-keychain.js · apps/desktop/test/proxy-password-sealed.js · apps/desktop/test/шифрование-правда-по-системам.js · apps/desktop/test/пароль-без-ключа-не-теряется.js
Архив сессии зашифрован, и неверный пароль получает честный отказ
apps/desktop/src/lib/bundle.js · apps/desktop/test/profile-bundle.js · apps/desktop/test/session-sync-folder.js
Пароль прокси в базе закрыт ключом, который лежит вне базы
apps/server/src/common/crypto/secret-box.ts · apps/server/test/proxy-secret.js

Вопросы

Это то же самое, что шифрование всего диска?
Нет. Шифрование диска бережёт выключенную машину, а это бережёт отдельный файл после того, как он с машины ушёл.
У кого ключ?
На Windows он у самой системы и привязан к вашей учётной записи Windows. На macOS ключ лежит внутри самой программы, то есть он у каждого, у кого есть программа, а на Linux ключа нет, потому что значения записаны как набраны. У архива ключ ваш, через пароль, которого папка синхронизации не видит.
Чем отличается Windows?
Только там замок принадлежит самой системе и привязан к вашей учётной записи Windows. А вот права только для хозяина там не работают, и папку закрывает учётная запись, внутри которой она лежит.
Пароль прокси лежит на вашем сервере открытым?
В базе он закрыт ключом, который живёт вне базы. Тот, у кого есть и то и другое, прочитает его, и ровно поэтому мы не называем продукт zero knowledge.
Почему не положить ключ внутрь программы?
Потому что этот ключ оказался бы у каждого, кто программу скачал, и значение осталось бы таким же открытым, но выглядело бы закрытым. На macOS так и есть: замок там держится на ключе, который лежит внутри самой программы.

Посмотрите, что и где записано

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