База знаний
Шифрование при хранении
Каждое поле письма запечатывается до записи на диск (тело, тема, адреса и байты вложений), так что копия базы данных — это шифротекст, а не почта.
Пока нет
Сегодня так запечатываются только переданные нам учётные данные; тела, темы и вложения хранятся в том виде, в каком пришли, а конверт, который будет их запечатывать, построен, но сознательно ни к чему не подключён.
Подробности
- Не выпущено. До записи на диск запечатывается ровно одна вещь и ничего больше: секрет подписи вебхуков. Он запечатан под собственным производным ключом, чтобы шифротекст, вынутый из одной таблицы, нельзя было открыть как другой, и это единственное место в кодовой базе, где вообще что-то запечатывается. Ни тело, ни тема, ни контакт, ни заметка, ни запись календаря, ни вложение через него не проходят.
- Это утверждение отличается от двух соседних, и отличие — в том, у кого ключ. Сквозное шифрование означает, что ключ ваш и почта здесь нечитаема; шифрование при хранении означает, что почта запечатывается по дороге в хранилище ключом, который выводит этот сервер, поэтому дамп базы, заблудившаяся резервная копия или запрос, который кто-то не должен был выполнять, — это шифротекст, тогда как сам сервер по-прежнему может его открыть, чтобы собирать цепочки, искать и составлять сводки. Первое защищает вас от нас. Второе защищает вас от всех остальных — и именно оно постоянно случается с другими.
- То, что верно сегодня, стоит сказать прямо, а не оставлять на догадки: почта хранится на инфраструктуре, которая шифрует собственные диски, никакого нашего слоя поверх этого нет, а ключи у нас, поэтому сервер может прочесть то, что хранит, — и функции, которые ищут по вашей почте и составляют сводки, именно этим и заняты. Страница о приватности говорит это теми же словами с момента написания и будет говорить, пока это не выйдет.
- «Каждое поле» — это больше, чем тело. Тема, список отправителя и получателей и фрагмент, который рисует список писем, лежат в обычных индексированных колонках, и там же лежат сводки, сгенерированные по письму, заметки, которые вы прикрепляете к цепочке, имена контактов, названия и места событий календаря, а также имя и тип каждого файла. Карточка, говорящая «зашифровано», пока строка темы остаётся открытой, была бы тем самым замком, который этот продукт отказывается рисовать где бы то ни было ещё.
- Открытым вопросом была цена, и у поисковой половины теперь есть число вместо рассуждений. Сегодня поиск — это запрос по первым 4000 символам самого нового письма каждой цепочки, хранимым как обычный текст. В запечатанном виде это превращается в расшифровку и просмотр внутри хранилища почтового ящика, у которого ключ уже есть, причём порциями, а не построчно: на синтетическом корпусе это примерно от 100 до 400 миллисекунд на 50 000 переписок, а после примерно 200 000 результаты должны приходить постепенно, а не все разом. Измерялось это на машине разработчика на сгенерированной почте, а не на живом ящике, так что это форма затрат, а не обещание про ваш ящик. Совпадение по любому фрагменту слова при этом сохраняется ровно так же, как сейчас, и ничему не нужно писать на диск индекс хешей слов, чтобы кто-то потом его унёс. Этот же текст читают составитель сводок, проход фишингового оценщика по телу письма, проверка на написанное ИИ и любое правило, совпадающее по словам, и каждый из них открывает его одинаково — в этом честная форма данного утверждения: запечатано от копии базы данных, но никогда не запечатано от сервера.
- Прежде чем запечатать что-то незаменимое, конверт должен нести собственную версию и собственный идентификатор ключа. Сегодня все производные ключи висят на одном секрете, и его ротация стоит вам секретов подписи вебхуков; если бы тела писем были запечатаны так же, ротация стоила бы почты. Эта часть построена, и ничего ею не запечатано. Каждый создаваемый ею конверт несёт свою версию и идентификатор сделавшего его ключа, читаемые до попытки открытия, и привязывает себя к той самой строке, которой принадлежит: значение, вынутое из одной строки и положенное в другую, не открывается и сообщает, что его переместили, а не падает как при неверном ключе. Пока её никто не вызывает, и в этом весь смысл — построить её первой. Формат — это обязательство; переход на него, по одному полю за раз, остаётся обратимой частью.
- Что именно запечатывать, решает одно предложение — чтобы его можно было применить и к колонке, о которой ещё никто не подумал: запечатывай всё, что человек написал или выбрал, оставляй всё, что выбрала машина. Тема, тело, заметка к цепочке, имя контакта, название события календаря, имя файла, набранное вами правило — это пришло от вас. Идентификатор письма, состояние очереди, счётчик повторов, идентификатор строки — это сгенерировано здесь, и их запечатывание не даёт ничего, зато стоит каждого запроса, который их читает. Сверху лежат два исключения. Значение, уже необратимое, — хеш или дайджест токена — не становится безопаснее оттого, что его ещё и запечатали. Значение, опубликованное намеренно, остаётся читаемым, потому что запечатать его — значит запечатать единственное, ради раздачи чего оно и существует.
- По этому правилу читаемыми остаются три вещи, и каждая из них — то, на чём держится почтовый ящик, а не недоделанный угол. Временные метки — потому что они ключ сортировки и курсор постраничной выдачи, а ящик, который не умеет упорядочивать по дате, — не ящик. Ваш домен — потому что запрос, который его читает, и есть то, как входящее письмо находит арендатора, которому принадлежит, ещё до того как кто-либо вошёл и до того как появился хоть один ключ. Опубликованные ключи — потому что отправитель ищет ваш. Каждая из них говорит что-то о форме аккаунта, и ни одна не является содержимым вашей почты.
- Запечатывание под ключом, который выводит сервер, — это первая ступень, и именно она строится. Вторая — запечатывание на ваш ключ в момент получения почты, чтобы ни один ключ здесь её не открывал, — это более крупное изменение и другой продукт: тело письма навсегда уходит из поиска и из функций с ИИ, а между вами и вашей же почтой встают хранение ключа и фраза восстановления. Это выбор, который делают осознанно, а не переключатель, который щёлкают, и эта карточка скажет, что именно вышло, а не смешает одно с другим.