Строим

Methmailприватная почта

Как будут устроены приглашения: код, заверенный вслепую

Обновлено:

Приглашение в Methmail будет доказывать, что вас позвали, но не кто позвал. Одна оговорка: когда связь можно будет угадать по времени. Как мы к этому пришли, рассказано в заметке «Как мы поймали себя на слове». А здесь расскажем, как это будет работать и чем мы за это заплатим.

Зачем приглашения

Сначала Methmail откроется в закрытой бете, по приглашениям. Так мы спокойно прогреем доставку писем, отсечём спам и поможем с переездом вручную. Подробнее о бете на странице «Как попасть».

Приглашение заменит и номер телефона: для регистрации он не понадобится. Иногда браузер решит небольшую вычислительную задачу: так мы отсекаем ботов без слежки. Почему мы не спросим номер, рассказано на странице «Почта без номера телефона».

Как это будет устроено

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

Простыми словами: ваше устройство придумает случайный код и отправит его серверу в замаскированном виде. Сервер заверит его, не видя, что заверяет, а устройство снимет маску. Когда кто-то придёт по коду, сервер сможет проверить, что заверял его сам, но не сможет узнать, для кого (такую схему называют VOPRF).

Чтобы один код нельзя было использовать дважды, сервер будет хранить хэш использованного кода. Кто его выдал и кто им воспользовался, записано не будет.

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

Что останется видно

Сервер будет видеть, когда аккаунт берёт приглашение и когда кто-то им пользуется. Если в это время почти никто больше приглашений не брал и не использовал, связь можно будет угадать по времени.

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

Что при этом будет храниться, перечислено в описи, в разделе о приглашениях.

Чем платим

  • Наград за приглашённых друзей не будет. Мы не будем знать, кого вы позвали, поэтому не сможем и наградить за это.
  • Потерянное приглашение не отследить. Приглашение сработает у того, у кого оно окажется, кто бы это ни был. Кому вы его отдали и кто переслал его дальше, мы не узнаем. Какие коды вы выдали, будет помнить ваше устройство.
  • Счёт идёт при выдаче. Приглашение будет считаться потраченным, когда вы его создадите, а не когда им воспользуются: кто им воспользовался, нам знать неоткуда.
  • Приглашений будет мало. У каждого участника будет всего несколько приглашений: ссылки или QR-коды. Каждое будет действовать 30 дней и сработает один раз. Мало их нарочно: так массово создавать ящики не получится. Приглашайте тех, за кого готовы поручиться: это просьба, а не проверка.

Что дальше