Асимметричная загадкография

English version

Рубрика “специалист по протоколам коммуникации старается быть литератором”.



Думала я тут про односторонние функции и хранение паролей в хешах (я часто думаю о таких вещах), и пришло в голову, что это можно использовать и для примитивных “шифровок” уровня “птичка вылетела из гнезда”. Пришел в голову интересный сюжетный ход – можете взять себе в модуль или книжку.



Важный NPC загадывает игроковской пати загадку. Загадка достаточно сложная (запутанная, нетривиальная и вообще плохо задизайненная), что игроки ее точно не разгадают, но при этом если им сказать ответ, они поймут, что это именно правильный ответ, который предполагался. Вероятно там будет много очень специфических условий, которые не наталкивают ни на какую конкретную мысль.



Позже (вероятно уже и забыв про эту загадку и не придавая ей большого значения) они встречают этого NPC, и они подозревают, что это может быть двойник, и им надо определить, настоящий он или двойник. Проблема в том, что двойник читает их мысли!



Какой бы вы ни задали вопрос уровня “что может знать только этот NPC”, он будет знать, какой ответ вас удовлетворит, а если вы будете провоцировать его на какое-то поведение, то он будет знать, какое поведение вы ожидаете. Какой бы способ отличить оригинал от двойника вы ни придумали, двойник будет точно знать, какое именно поведение заставит вас считать, что он оригинал. Он знает все, что знаете вы, может предвидеть все ваши ходы и знать, как избежать всех ваших ловушек. Казалось бы, решить ситуацию невозможно – двойник может полностью имитировать оригинал (каким он является в вашем понимании); какой бы у вас ни был способ понять, оригинал ли он, он всегда сможет его предугадать и повести себя полностью как вы бы ожидали от оригинала.



Но есть креативный способ для нетривиально мыслящего протагониста! Попросить его сказать разгадку на загадку. Оригинал вам просто ее скажет, вы распознаете, что этот ответ подходит под загадку, и так поймете, что это оригинал. Но двойник не знает разгадки! Он может прочитать из вашего разума загадку, но он не может прочитать разгадку, потому что вы сами ее не знаете. Он может понять, что вы ожидаете услышать ответ, но он не знает конкретную формулировку ответа – это односторонняя функция; проверить, что ответ правильный, можно, а получить ответ изначально нельзя. Поэтому двойник не сможет сказать разгадку и на этом спалится.



Было бы круто прикрутить сюда еще ZKP, чтобы можно было повторять трюк сколько угодно – иначе он работает только один раз; как только вы узнали разгадку, любой дальнейший двойник сможет ее узнать. Но если игроки начнут носить с собой кодовые книжки с запасом загадок друг для друга, будет бомба конечно.


Другие посты
Подписаться