Как проверить отпечаток прогноза
Мы не просим верить на слово. Здесь простыми словами объяснено, почему запечатанный прогноз нельзя подменить, и как убедиться в этом самому.
Как это работает — простыми словами
Представьте, что вы написали прогноз на листке, положили его в конверт и поставили на конверте печать. Конверт нельзя вскрыть до назначенного дня, а саму печать мы выставляем на всеобщее обозрение сразу. Через год конверт вскрывают — и любой может убедиться, что печать подходит именно к этому листку, а не к другому.
Отпечаток текста — это и есть такая печать. Выглядит как длинная строка из цифр и букв, но смысл у неё простой:
- 1
Ставим печать
Сайт пропускает текст прогноза через специальную программу и получает короткую строку — отпечаток. Это происходит в момент запечатывания.
- 2
Показываем печать всем
Отпечаток виден сразу — на странице прогноза и в Telegram-канале, где у каждого сообщения есть дата, которую мы изменить не можем. Сам текст остаётся скрытым.
- 3
Сверяем
В день раскрытия мы показываем текст. Любой может пропустить его через ту же программу: если получилась такая же строка — текст тот самый.
Почему подделать нельзя
- Любая правка меняет печать целиком. Заменили одну цифру или запятую — строка становится совершенно другой. Пример ниже.
- По печати нельзя узнать текст. Как по отпечатку пальца нельзя нарисовать человека. Поэтому показывать печать заранее безопасно.
- Подобрать другой текст с такой же печатью невозможно. Для этого не хватило бы мощности всех компьютеров мира.
Пример: два текста отличаются одной цифрой, а отпечатки не похожи совсем
«Будет снег до 1 ноября»
9aab6572fbb1528a9435b7cf80fca9989f308185f55378e8910be59ed70a30f4«Будет снег до 2 ноября»
51e7cb0d239298baf57b7c316bfd816efd7875f15cbabc0cd0dda4cefbe40026Зачем «соль»
Если прогноз совсем короткий, например «Да», по печати его можно угадать, перебрав популярные ответы. Поэтому мы подмешиваем к тексту случайный набор символов — соль. Она держится в секрете и открывается вместе с текстом, как ключ к печати. Для проверки она нужна: без соли посчитать такую же строку не получится. Сразу после запечатывания соль получает только автор — чтобы сохранить у себя копию.
Защита от правок — в том числе с нашей стороны
Печать защищает прогноз и от администрации сайта. Технически мы можем открыть базу данных и исправить чей-то текст. Но исправленный текст уже не подойдёт к печати, которую вы получили в момент запечатывания, — и это можно доказать.
- Сохраните отпечаток и соль. Сразу после запечатывания сайт показывает их в окне «Поделиться» — скопируйте или сделайте снимок экрана.
- Если вы вошли в аккаунт, мы продублируем их письмом. Оно останется в вашей почте с датой, которую мы изменить не можем, а у нас сохранится запись об отправке.
- Сохраните и свой текст. Без него нечего будет сравнивать.
- Если после раскрытия текст на сайте отличается от вашего, посчитайте печать от вашего исходного текста и сохранённой соли (как — ниже). Если получилась та же печать, что вы сохранили, а текст на сайте другой, — его подменили.
Что именно считать и как это сделать на вашем устройстве — ниже.
Подробнее: как устроен отпечаток
Когда вы запечатываете прогноз, сайт выбирает случайную соль и считает sha256(«соль:текст»). Получается 64 шестнадцатеричных символа — отпечаток. Он виден всем сразу, его же мы публикуем в Telegram-канале и в сообщении бота. Текст и соль остаются скрытыми до дня раскрытия.
В день раскрытия сайт показывает текст и соль. Если посчитать sha256 от «соль:текст», получится тот же отпечаток — значит, текст ровно тот, что был запечатан. Изменить даже одну букву так, чтобы отпечаток остался прежним, практически невозможно.
Соль нужна, чтобы короткие ответы вроде «Да» или «Реал» нельзя было вычислить, перебирая варианты по хэшу ещё до раскрытия.
Что понадобится
- Отпечаток — он показан на странице прогноза и в анонсе в канале. Лучше сохранить его до раскрытия: так вы точно знаете, что он не менялся.
- Соль и текст — открываются на странице прогноза после раскрытия, в блоке «Данные для проверки».
Посчитать у себя
Откройте «Терминал» (Программы → Утилиты) и выполните команду. Подставьте вместо СОЛЬ и ТЕКСТ свои значения; если в тексте есть апостроф, замените каждый на '\''.
printf '%s' 'СОЛЬ:ТЕКСТ' | shasum -a 256
Вместо СОЛЬ:ТЕКСТ подставьте строку из соли, двоеточия и текста без пробелов вокруг двоеточия. Результат — 64 символа; сравните его с отпечатком.
Пример, который можно повторить
Возьмём вымышленный прогноз:
- Соль
- 00112233445566778899aabbccddeeff
- Текст
- Да, будет снег до 1 ноября
- Строка для хэширования
- 00112233445566778899aabbccddeeff:Да, будет снег до 1 ноября
- Ожидаемый отпечаток
- 0616a7bb7900b6f666806b3ad410fa60ea6b5562c8e97b0d3fa657250afc1c6f
Подставьте строку в команду или в команду iOS выше — должен получиться этот же отпечаток. Так можно убедиться, что вы всё делаете правильно, прежде чем проверять настоящий прогноз.
Если не совпало
- Текст нужно брать в точности, как на странице: сайт убирает пробелы и переводы строк в начале и в конце, но внутри текст остаётся как написан, включая переводы строк.
- Не должно быть лишних пробелов вокруг двоеточия и перевода строки в конце строки: в командах выше это учтено через
printf '%s', а неecho. - Кодировка — UTF-8. Скрипт Python и PowerShell из примера её задают явно.
- Если прогноз удалил модератор или автор, а текст заменён заглушкой, отпечаток уже не сойдётся.
- У прогнозов, созданных до появления отпечатков, его нет — проверить их нельзя.
Что проверка доказывает
Совпавший отпечаток доказывает, что текст на странице — тот самый, из которого был посчитан отпечаток при запечатывании. Когда отпечаток опубликован в Telegram-канале, у него есть дата, которую мы не контролируем, — подменить прогноз задним числом, не оставив следа, не получится. Это не оценка того, сбылся прогноз или нет — только подтверждение, что он не менялся.
Прогнозы, запечатанные до появления отпечатков, получили его при обновлении сайта, а не в момент запечатывания, поэтому для них гарантия действует только с того момента, когда отпечаток впервые появился на сайте. У прогнозов, раскрытых до этого, отпечатка нет вовсе.
Запечатать свой прогноз