Предположим, вы разрабатываете компьютерную игру, которая отслеживает высокие баллы. В дополнение к локальным подсчетам создается глобальный сервер с высоким рейтингом, доступ к которому осуществляется через Интернет. Игроки должны быть в состоянии представить свои высокие баллы в список глобальных высоких баллов сразу после того, как они завершили игру, или позже, из своего локального списка с высокими баллами. Это должна быть общая проблема; аркадные игры на современных игровых консолях часто содержат глобальный список высоких баллов, который работает так.
Мой вопрос сводится к следующему: как вы можете помешать кому-то подавать фиктивные высокие баллы? Или, заявив другим способом, как глобальный сервер с высоким рейтингом может быть уверен, что представленный балл действительно был создан запустить игру?
Чем больше я думал об этом, тем больше думаю, что это может быть неразрешимой проблемой.
Что вы обычно делаете, чтобы убедиться, что сообщение, возникшее из определенного источника, имеет источник, который подписывает текст в цифровой форме. В этом случае вы, безусловно, можете сделать это, но настоящая проблема заключается в том, что у игрока, имея программное обеспечение, также есть секретный ключ программного обеспечения. Независимо от того, каким образом он запутался, он может быть обратным инженером или даже просто вырван из памяти.
Другим вариантом было бы отправить повтор игры игрока на сервер с высокими баллами, что бы быстро запустить повтор и проверить, соответствует ли представленная оценка результату повтора. Это не решает проблему, но, безусловно, затрудняет подделку поддельного высокого балла, если вам также нужно создать очень сложный повтор, который "доказывает" его.
Это проблема, которая имеет решение, или она действительно неразрешима? Существуют ли методы, используемые разработчиками домашней игровой консоли для предотвращения такого рода эксплойтов или они просто полагаются на консоль, предотвращая запуск неавторизованного кода?