Новости · Безопасность в Blackbear
Как совместный доступ остаётся запечатанным
Именно на совместном доступе большинство продуктов тихо отказывается от шифрования. Как только двоим людям нужен один и тот же документ, проще всего расшифровать его на сервере и назвать это функцией. Мы не пошли простым путём.
Blackbear делится файлами, папками и правками в реальном времени, не отдавая нам ключи. Вот как это устроено изнутри.
Права доступа — это подписанный документ
Каждым общим пространством управляет схема полномочий: небольшой документ с правилами, в котором назван каждый участник и то, что ему разрешено. Его подписывает устройство владельца. Каждая новая версия ссылается на хеш предыдущей, выстраиваясь в цепочку, и увеличивает счётчик эпох.
Как только ваше устройство увидело какую-то версию пространства, оно отвергает всё, что старше: восьмую версию никогда не заменит седьмая. У совсем нового устройства нет истории для сравнения, и оно начинает с того, что получит первым; но с этого момента храповик держит. Сервер распространяет правила. Составлять их он не может и откатить их назад для устройства с историей тоже не может.
Один ключ, запечатанный для каждого
У общего пространства есть ключ содержимого. Никто не рассылает его в открытом виде. Он запечатан отдельно для открытого ключа каждого участника, и эти запечатанные копии хранит сервер. Он может держать у себя каждую из них и не может открыть ни одну.
Роли, которые нельзя подделать
Читатель, комментатор, редактор, модератор, владелец. Каждое назначение роли несёт подпись того, кто эту роль выдал. Правка строки в базе данных никого не повысит.
Отзыв доступа меняет ключ
Удаление участника переключает эпоху: ключ содержимого сменяется и заново запечатывается для всех оставшихся. Всё, чем делятся после этого момента, для ушедшего закрыто.
Честность требует сказать и вторую половину: то, что человек уже синхронизировал, уже осталось у него. Ни один протокол не может забраться на устройство и забрать отправленные данные назад. Кто утверждает, что его отзыв доступа на это способен, тот что-то продаёт.
Живое редактирование — это пересылаемый шифртекст
При совместной работе в реальном времени через сервер идут зашифрованные обновления CRDT. Сервер видит отпечатки ключей участников, эпохи ключей и размеры. Он упорядочивает поток и разсылает его. Слова, появляющиеся под курсором вашего соавтора, расшифровываются на его устройстве, а не у нас.
Авторство подписано
Ваши действия подписываются ключом вашего профиля. Pax подписывает своим собственным. То, что написали вы, и то, что написал ваш помощник, остаётся криптографически разделённым, и для этого ничего не нужно настраивать.
Ваши люди не платят
Для совместного доступа другой стороне не нужно платить. Запечатывание содержимого работает одинаково для всех участников, бесплатных и платных. А бесплатные гости полноценно участвуют в пространствах, которые оплачивает владелец: переписываются, редактируют вместе, присоединяются к звонкам — по тем же правилам доступа, что и все остальные. Правило в основе простое: в каждом соединении через сервер должен быть хотя бы один платящий владелец, и если сервер не может это подтвердить, он отказывает.
На этом серия заканчивается. Ваше содержимое запечатывается на вашем устройстве, прежде чем куда-то отправится. Наши серверы хранят короткий опубликованный перечень метаданных. А совместный доступ расширяет печать, а не ломает её.
Что почитать
- Public-key cryptography — как работает запечатывание для конкретного человека
- Conflict-free replicated data types — математика живого совместного редактирования
- Yjs — движок CRDT, на котором построено наше живое редактирование
- Hash chains — почему права доступа нельзя незаметно откатить назад
- Digital signatures — почему роли нельзя подделать
Безопасность в Blackbear
- 1. Что мы не можем прочитать
- 2. Что видят наши серверы
- 3. Как совместный доступ остаётся запечатанным (вы здесь)