Онлайн-голосования — «приз зрительских симпатий», конкурс, премия — слишком часто решает тот, кто
купил голоса. Капчу платный сервис решает за доли цента, почтовый адрес не стоит ничего,
аккаунт в соцсети — несколько центов. Организатору нечем ответить на обвинение, кроме обещания.
Направление — виджет голосования, который встраивается на любой сайт. Каждый голос — это
подтверждение Veriqa в мессенджере голосующего: одно нажатие, без регистрации, пароля и ввода
кода, — а итог сопровождается подписанной квитанцией, которую могут проверить и сам голосующий, и
третья сторона. Одной фразой: голосование, итог которого можно предъявить, а не только пообещать.
Зачем это нужно
- Голосующий голосует без учётной записи, а квитанция позволяет ему убедиться, что его голос
вошёл в итог.
- Номинант получает победу, которую можно доказать. Победа, которую никто не может проверить,
мало стоит, как только кто-то скажет, что её купили.
- Организатор переходит от «поверьте нам» к «проверьте сами» и не обязан хранить номера
телефонов ради борьбы с накрутками.
- Спонсор получает итог, который можно проверить аудитом, и охват, измеренный людьми, а не
кликами.
- Разработчик сайта встраивает виджет вместо собственной верификации, хранения номеров и
своего антифрода.
Кампания, которая идёт сразу в нескольких соцсетях, получает ещё одно. Сегодня голоса из каждой
сети складываются, и один и тот же человек учитывается столько раз, во скольких сетях
проголосовал. Номер телефона — единственный идентификатор, общий для всех сетей: если посты во
всех сетях ведут в один бюллетень, один человек — это один голос независимо от точки входа, а
организатор видит, сколько уникальных людей привела каждая сеть и насколько пересекаются
аудитории. Цена — лишний переход: во встроенный опрос самой сети — опрос в канале или стикер в
Stories — подтверждение вставить некуда.
Насколько сильна защита
Совершенного антифрода не бывает, и направление не заявляет неуязвимости. Оно заявляет накрутку
дороже, чем при распространённых сегодня на сайтах способах: капча или подтверждение по почте
обходятся ферме почти даром, аккаунт в соцсети — в несколько центов, а личность, привязанная к
номеру телефона, — примерно на порядок дороже аккаунта в соцсети.
SMS-верификация опирается на тот же якорь, и против неё защита на паритете. Разница в другом:
сообщения в мессенджере не тарифицируются поштучно, а голосующий не переписывает код. Тот же
расчёт, что и в «Замене SMS-кодов»: телефонный якорь по цене
мессенджера везде, где у аудитории он есть.
На чём это стоит
Голос — не отдельный продукт, а подтверждение действия с данными: какой опрос и какой выбор. Такая
транзакция уже есть:
- Серверное подтверждение. Сервер сайта вызывает
POST /api/transaction/confirmation с
объявленным типом действия (action_type) и получает deep link канала и QR-код для
голосующего. Исход забирается запросом GET /api/transaction/{id}/result — confirmed,
declined, expired или failed, — и ответ не раскрывает, кто подтвердил.
- Точный предмет в сообщении. Опрос и выбор едут типизированными слотами (
slot_values) по
схеме типа действия, и голосующий видит в чате, за что голосует, с кнопками «Подтвердить» и
«Отклонить».
- Номер телефона как ключ. В WhatsApp учётная запись — это номер телефона, и канал отдаёт
phone_number. Telegram передаёт идентификатор аккаунта, а не номер — см.
каталог каналов.
- Журнал аудита. Журнал только дописывается; развёртывание может явно включить запись
параметров подтверждённой операции, а идентификаторы пользователей попадают в него только в
маскированном виде.
Чего сегодня нет
- «Один человек — один голос». Продукт подтверждает действие, но голоса не считает и не
дедуплицирует их в границах опроса.
- Ключа, который не хранит номер. Для дедупликации нужен телефон, но в записи должен лежать
необратимый хеш с секретом, свой для каждого опроса, а не сам номер, — подход из статьи
«Устойчивость к утечке персональных данных». В Telegram номер
доступен, только если пользователь явно им поделится.
- Подписанной квитанции и проверяемого итога. Голосующему нужна квитанция, а опросу —
публикуемая сводка, по которой голосующий проверяет, что его голос включён, а третья сторона —
что итог сходится с реестром. Сообщение, которое Veriqa отправляет после подтверждения, — текст
для пользователя, а не заверение, и журнал аудита не защищён от подмены записей.
- Уровня якоря как свойства опроса. Не плашка «защищено», а «собрано на якоре стоимостью
примерно столько-то за личность» — вместе с проверками вокруг ключа: виртуальные диапазоны
номеров, всплески голосов из одной сети, повторяющиеся паттерны.
- Виджета и сервиса за ним. Виджет на произвольном сайте означает, что голосование хостит
Veriqa, а не интегратор: разрешённые источники (origin), ограничение частоты запросов,
политика против злоупотреблений.
- Email для этой транзакции не подходит: адрес ничего не стоит, поэтому голос, подтверждённый
по почте, ни к чему не привязан.
Платформа голосований или конкурсов, которая принимает внешний OpenID Connect провайдер, может
подключить Veriqa способом входа уже сегодня, как любой другой OIDC-клиент, — как устроено такое
подключение, см. «SaaS-конструкторы». Пускает ли платформа
публичную аудиторию через внешний провайдер — вопрос самой платформы. Голоса в этом случае
считает она, поэтому таким путём доступны якорь и подтверждение одним нажатием, а квитанция и
проверяемый итог — нет.
Где проходит граница
Подтверждённый голос атрибутируем: он связан с подтверждением голосующего. Это подходит для
зрительских симпатий, конкурса или премии и не подходит для выборов и любых решений с правовыми
последствиями, где важна тайна голосования.
- Голоса, купленные у живых людей, здесь не останавливает ничто. Телефонный якорь поднимает
цену голоса до стоимости времени человека — и на этом останавливается.
- Квитанция сдвигает доверие, но не отменяет его. Она доказывает, что сайт не изменил итог, и
не доказывает, что Veriqa не выпустила фиктивных личностей.
- Охват. Там, где заметная часть аудитории не пользуется ни одним из поддерживаемых
мессенджеров, — например, в США, где единого доминирующего мессенджера нет, — виджет не может
быть единственным способом проголосовать, а любой запасной путь без телефонного якоря опускает
гарантию до своего уровня.
- Квитанция — это заверение подсчёта, а не электронная подпись в юридическом смысле.