Casual & Tyrex
Ты когда-нибудь задумывался, как сделать игру, чтобы троян не мог украсть прогресс игрока? Я думаю, нужен уровень с нулевым доверием, независимо от того, сколько перекуров ты делаешь. Если получится, единственное, о чем придётся беспокоиться, — это забытые на работе печеньки.
Ну, я бы просто перебирал каждый сохранение, шифровал его и заставлял сервер сверять каждый бит перед любыми изменениями. Так что даже если вирус проскользнет, он даже не сможет прочитать данные. А если переживаешь из-за перерыва на кофе, просто выдели время без изменений — никто ничего не украдет, пока игра на паузе. Только не забудь взять перекус, потому что это единственное, что точно под твоим контролем.
Хеширование и перепроверки – это, конечно, хорошо, но ты всё равно доверяешь каналу. Шифруй, проводи аудит, потом запусти мониторинг побочных каналов. И если уж притащил угощение, убедись, что оно запаковано с защитой от вскрытия. Иначе единственное, что останется в безопасности – это факт того, что ты смотришь логи.
Ладно, значит, тебе нужна среда с нулевым доверием, которая реально сможет выявлять трояна в реальном времени? Без проблем. Запусти игру на виртуальной машине с песочницей, шифруй каждый пакет публичным ключом и поставь маленький сторожевой таймер, который проверяет хеш каждой записи. Если хеш меняется – заверши процесс, запиши это в лог и спроси пользователя, доел ли он уже перекус. И да, закрой этот перекус в защитной упаковке – никто не любит неожиданный сырный шарик. Только не забудь кофе, это единственное, что я вообще помню, чтобы подзарядиться.
Строишь крепость – хорошо. Только не забудь укрепить и само окружение; скомпрометированный гипервизор – это тупик. И когда будешь спрашивать пользователя насчет перекуса, сделай запрос без ожидания ответа – запиши в лог и заверши выполнение, вместо того, чтобы ждать. Иначе читер поставит игру на паузу и будет ждать ответа. Кофе можно, но только если он зашифрован в отдельном контейнере.
Ладно, значит, ты тоже хочешь заблокировать гипервизор — может, патчить его каждый день и запустить маленький агент, который будет проверять его целостность. А если будешь делать проверку закусок в неинтерактивном режиме, просто запиши в лог, заверши процесс и отправь пользователю предупреждающее письмо. Держи кофе в контейнере с отдельным ключом, чтобы никто не украл твой уровень кофеина. В общем, единственное, что действительно безопасно – это твои перекусы и то, что я никогда не помню, где оставил свой телефон.
Обновляй гипервизор каждый день, но сохраняй подписанные контрольные суммы для каждого патча. Всё записывай, проверяй, не доверяй письмам. Кофе в термосе – нормально, а ключ должен храниться на изолированном устройстве. А телефон… если забудешь, где он лежит, дашь атакующему подарок. Храни его в секретном месте.
Подписанные контрольные суммы для каждого патча гипервизора – отличная идея, но, скорее всего, я всё равно забуду, куда положил свой изолированный ключ. Попробую запереть его в том же ящике, где мой список закусок. А если забуду телефон, нападающему – халява, так что положу его в сейф, комбинацию от которого знаю только я. Кофе шифруем, закуски запаковываем, а остальная система просто всё записывает, пока я не решу, когда это проверять.
Зачётный ход с ключом и закуской, но теперь это самая лакомая цель. Лучше положи ключ в отдельный сейф, а закуску – в другой ящик. Иначе, если забудешь код от сейфа, просто заменишь одну уязвимость другой. Шифровать кофе – хорошо, но убедись, что ключ шифрования хранится на устройстве, которым ты физически управляешь. И если правда хочешь телефон в безопасности, запомни код – иначе нападавший получит и закуску, и телефон.