Защита сэйвов

Все об аддоне - обсуждение, баги, FAQ, список изменений и многое другое.
serger
Level 8 Hero
Level 8 Hero
Posts: 117
Joined: Tue Jul 26, 2005 18:57
Location: Moscow

Защита сэйвов

Post by serger »

Mod note: тут было заспамлено
Last edited by serger on Thu Apr 08, 2010 02:11, edited 3 times in total.
User avatar
Lost
Equilibris Core Team
Equilibris Core Team
Posts: 481
Joined: Sat Apr 02, 2005 17:33
Location: Москва

Re: Хочется даже в офф-лайне избежать тактики "s/l"

Post by Lost »

serger wrote: Алгоритм предлагается следующий:
- есть функция получить тек. состояние игры CurrentStatus()
- есть функция сохранить в реестре ключ RegSave( NameOfMap, CurrentStatus() )
Такой метод не защищен от подделки записи в реестре.

Если вы пополнее опишете, что именно вы хотите проконтролировать/запретить, то возможно, будет найдено более защищенное решение.
serger
Level 8 Hero
Level 8 Hero
Posts: 117
Joined: Tue Jul 26, 2005 18:57
Location: Moscow

Post by serger »

2Lost:
Да, согласен. Хитрый геймер весь реестр заново поднимет, лишь бы продолжить с нужного места...

Что хочется: чтобы люди, которым дан сейв, проходили его один раз. Чтобы нельзя было "сыграть 20 дней и вернуться к 8-му". Но могли отложить игру, сохранившись. И потом именно с этого места продолжить.
Однако, способ который сейчас предлагается на турнирных серверах "мы, парень, тебя грузим в мультике с паролем, и играй всю ночь, потому что второй раз ты загрузиться без нас не сможешь" - неудобен. Можно долго развивать тему, чем именно неудобен, не суть.

Надеюсь на Вашу ловкость закрыться от хитрого геймера.

P.S. По первому вопросу тоже ничего?
User avatar
Lost
Equilibris Core Team
Equilibris Core Team
Posts: 481
Joined: Sat Apr 02, 2005 17:33
Location: Москва

Post by Lost »

serger wrote:2Lost:
Да, согласен. Хитрый геймер весь реестр заново поднимет, лишь бы продолжить с нужного места...

Что хочется: чтобы люди, которым дан сейв, проходили его один раз. Чтобы нельзя было "сыграть 20 дней и вернуться к 8-му". Но могли отложить игру, сохранившись. И потом именно с этого места продолжить.
Я пока не вижу как это можно правильно ограничить :( Надо подумать.
P.S. По первому вопросу тоже ничего?
В смысле? Счетчик сейвов/лоадов есть, но он считает только общее количество, а не количество сейвов/лоадов за ход.
serger
Level 8 Hero
Level 8 Hero
Posts: 117
Joined: Tue Jul 26, 2005 18:57
Location: Moscow

Post by serger »

Счетчик сейвов/лоадов есть, но он считает только общее количество, а не количество сейвов/лоадов за ход
Замечательно! Этого достаточно. Я после каждого хода (мыла) его буду просматривать. Где/как его можно наблюдать?
User avatar
Lost
Equilibris Core Team
Equilibris Core Team
Posts: 481
Joined: Sat Apr 02, 2005 17:33
Location: Москва

Post by Lost »

serger wrote:
Счетчик сейвов/лоадов есть, но он считает только общее количество, а не количество сейвов/лоадов за ход
Замечательно! Этого достаточно. Я после каждого хода (мыла) его буду просматривать. Где/как его можно наблюдать?
Он зашифрован и зашит в сейв. Расшифровкой занимается специальная программа.
serger
Level 8 Hero
Level 8 Hero
Posts: 117
Joined: Tue Jul 26, 2005 18:57
Location: Moscow

Post by serger »

А почему так скупо? Это закрытая инфа?
Или где-то можно почитать, чтобы не докучать?

Просто не понимаю :(
Если "нет", так нет.
Если "надо подождать", то подождем.
Если "да", то где скачать программу, как пользоваться, подробнее, пожалуйста.
User avatar
Lost
Equilibris Core Team
Equilibris Core Team
Posts: 481
Joined: Sat Apr 02, 2005 17:33
Location: Москва

Post by Lost »

serger wrote:А почему так скупо? Это закрытая инфа?
Скажем так, полузакрытая.
Просто не понимаю :(
Если "нет", так нет.
Если "надо подождать", то подождем.
Если "да", то где скачать программу, как пользоваться, подробнее, пожалуйста.
Программа пока находится только у меня и у устроителей турниров. Я пока не уверен, что выкладывание ее в свободный доступ не скомпрометирует оффлайновые турниры.
Chameleon
Expert Wisdom
Expert Wisdom
Posts: 448
Joined: Sun Apr 03, 2005 21:39
Location: Russia, PTZ
Contact:

Post by Chameleon »

Lost wrote:Программа пока находится только у меня и у устроителей турниров. Я пока не уверен, что выкладывание ее в свободный доступ не скомпрометирует оффлайновые турниры.
Тем более, что с багами не все в порядке :(
CMEPTb, Little Angel of Death
"Если ничто другое не помогает, прочтите, наконец, инструкцию."
- Аксиома Кана.
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

...Так. В этой теме еще не писал. ;D
serger: Если игра будет вести лог действий игрока (по которым можно судить, честно ли он играет) и записывать его в сейв, это бы устроило? Например:
19:42:56 load
19:43:07 Hero "Gem" [105,74]: move to [109:66]
19:43:08 Hero "Gem" [109:66]: battle with Harpies [111:65]
19:45:32 load
19:45:37 Hero "Gem" [105,74]: move to [109:66]
19:45:39 Hero "Gem" [109:66]: battle with Harpies [111:65]
19:45:41 load
19:45:44 Hero "Gem" [105,74]: move to [117:56]
19:45:44 Hero "Gem" [117:56]: pick up Treasure [118:57]
и т.д...
serger
Level 8 Hero
Level 8 Hero
Posts: 117
Joined: Tue Jul 26, 2005 18:57
Location: Moscow

Post by serger »

Accolon: Если игра будет вести лог действий игрока (по которым можно судить, честно ли он играет) и записывать его в сейв, это бы устроило?
Не совсем. Этот метод хорош для первой задачи ("игра по переписке"), когда я вижу сейв соперника после каждого хода. И если в сейве не так легко вытираются строки "load" :)

Вторую проблему ("офф- турнир") это совсем не решает. Он воспользуется ранним "чистым" сейвом, и, т.о., офф-лайны опять возвращаются к бесконечному s/l.

Ну, может, хоть первую ... :(

P.S. И еще мне непонятно желание "закрыться" :(
Как скомпрометируются турниры? Неясно. Зато пользы - до..рена.
Ведь многие и сингл бы играли с такими же установками. Самому себе-то любимому крутость доказать! Мелочь, а приятно.

P.P.S. Помните, как в III в элите прописывалось "ЧИТЕР!" ?
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

serger:
Схема: действия по ходу игры можно записать, но их нельзя изменить.
Примечание: S/L/EoT - сокращение для действий Save Game, Load Game, End of Turn.
1. Лог действий. Вводим "прошнурованный" лог S/L/EoT действий игроков (и Устроителя), доступный для чтения и добавления. Помещаем его в save-файл игры. Лог S/L/EoT один - для всех игроков и Устроителя турнира. Он доступен игроку для просмотра в стиле чата, как расшифрованный при Load и добавляемый с каждым Save и заканчиваемый EoT-ом.
2. Сейв игры шифруем при записи. Имея ключ для шифровки и не имея ключа для расшифровки save-файла, игрок самостоятельно загрузить свой же сейв уже не может. Загрузить можно только полученный почтой сейв ("почтовый"), но многократно. При первой же загрузке файла игры происходит обновление лога S/L/EoT => происходит запись игры => происходит перезапись save-файла. Ключ для расшифровки текущего save-файла игры находится у игрока следующего цвета (если записанная игра отсылается ему) или у Устроителя (Гаранта честности) турнира.
3. Турнирный лог. Если необходимо отследить многократную загрузку "почтового" сейва, то в отношении каждого проводимого тура нужно так же вести лог работы самой Экви-программы. Дополнительный ключ для шифровки лога работы Экви-программы дается или соперником или Устроителем или Гарантом. Хранится зашифрованный лог турнира на машине игрока. В сейве игры хранятся все логи турнира. Ведение лога работы Экви-программы активизируется при загрузке турнирного сейва. Записи в логе, отсутствующие на машине игрока и относящиеся к нему, особо отмечаются и, как особливо отмеченные, добавляются к турнирному логу игрока в сейве и на машине.
serger: И еще мне непонятно желание "закрыться"
Единственное объяснение - алгоритм уязвим, но принят устроителями турниров в отсутствии лучшего варианта.
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

P.S. И еще мне непонятно желание "закрыться"
Я, конечно, не ахти какой спец в защите информации и шифровании, но по-моему, ни одна защита не выдерживает, когда зашифрованный объект и дешифровальная машина находятся в руках взломщика. Это так, не углубляясь в дебри. К примеру, все форматы защиты авторских прав в DVD потерпели жесточайшее поражение. А все потому, что носитель и дешифратор в плеере - в руках хакера.

Если мы хотим предотвратить читинг, то дать в руки читеру инструмент контроля за тем, чтобы он не читил - это все равно, что просто отказаться от инструмента контроля. На это оффлайновые турниры просто не пойдут. А с ними солидарны в первую очередь как раз честные игроки.

Тем не менее, у меня тут родилась одна идея. Если внутреннее обсуждение подтвердит ее жизнеспособность - это будет еще одна возможность программисту с любым языком программирования реально помочь проекту. Если точнее - людям, для которых важна честная игра. Ну и кроме этого, мне кажется, что это неплохая школа выполнения прикладных задач в программировании.

P.S. Сегодня еще один человек получил инструкции по использованию репозитария исходников. Это чтобы совсем не оставалось негатива по поводу нашей "закрытости".
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
serger
Level 8 Hero
Level 8 Hero
Posts: 117
Joined: Tue Jul 26, 2005 18:57
Location: Moscow

Post by serger »

2Dalai:
Вы немного не в курсе. Эту проблему человечество уже решило.
Дело в том, что сущностей три, а не две: зашифрованный объект, алгоритм шифрования, ключ (две половинки).
В отличии от ДВД (где все в одном флаконе), вторая половина ключа (т.н. "секретный ключ") у пользователя не хранится :)
Более того, "алгоритм" не скрывается, его описание можно найти в сети... А вот дешифровать, имея на руках все: файл, алгоритм, публичную половину... никак нельзя.
Простейший (в свободном доступе) алгоритм pgp (скоро 20 лет стукнет) имеет время взлома на 128-битном ключе что-то около 10**8 лет на современном быстродействии :)
Новый "ГОСТ" (от ФАПСИ) вообще крут невероятно, правда достать сложнее...

2Accolon:
Это все сценарии другой игры :(
Если необходимо отследить многократную загрузку "почтового" сейва, то в отношении каждого проводимого тура нужно так же вести лог работы самой Экви-программы
Так об этом и речь. Смысл в том, чтобы оставить след от игры где-то еще, кроме сейва. Но реестр или сам сейв не подходит, т.к. грубо, перед началом игры "архивируется весь винчестер", затем делаются ходы, карта изучена,... винт форматируется, и восстанавливается из архива.
Все!!! Все "потуги защиты" преодолены.

Я тут разговаривал со "спецами" (в определенных областях), так вот, проблема эта известна, и решение (вы будете смеяться) тоже существует. Смысл решения в разделении мест хранения. В момент сейва обновляется не реестр на машине игрока, а реестр на серверной машине. Напр., по мылу. Напр., не каждый комбат, а каждый ход. 30-60 коротких писем на игру даже слабый инет выдержит.
Ответное мыло (с зашифрованным номером хода / статусом игры) от сервера позволяет загрузить игру. Ошибка при "синхронизации" (записи статуса / получении ответного мыла об успехе) в конце хода - невозможность продолжить игру. Вот и все.
serger
Level 8 Hero
Level 8 Hero
Posts: 117
Joined: Tue Jul 26, 2005 18:57
Location: Moscow

Post by serger »

Кстати, вот еще что в голову пришло.
Если организаторы турниров, играющие по схеме "старт он-лайн с паролем, затем играй без пауз пока свет не отрубят", думают, что таким способом им удастся не позволить игроку перезагрузиться и перепройти карту "набело", то они опять же заблуждаются.

Отсутствие хранилища где-то еще кроме пользовательской машины не мешает ему сделать дамп памяти, пройти карту, и восстановиться из дампа. Тем более, что такая фича, по слухам, уже встроена в новые винды. А если и не встроена, то заиметь такую программу - пара пустяков.
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

serger: В общем, ты хочешь избежать возможности изучения расклада на карте, и искушения записи лишь удачных ходов и боевок? Тогда с сервера, хранящего всю карту, игроку должна передаваться лишь та часть карты, которую он может изучить за, например, один ход или игровой день. Это позволит игроку изучить карту "на халяву" за один ход или день соответственно - методом архивации и форматирования. Естественно, сервер должен вести лог освоения карты игроками. Кстати, избежать соблазна изучения "критичного" расклада на карте (скиллы, спеллы, артефакты) можно изменив схему выдачи скиллов и спеллов в замках и при levelUp-ах. Хак с артефактами будет возможен даже в случае передачи с сервера одного мув-поинта. Даже если артефакты будут генерится в сокровищницах в момент грабежа.
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

serger wrote:2Dalai:
Вы немного не в курсе. Эту проблему человечество уже решило.
Дело в том, что сущностей три, а не две: зашифрованный объект, алгоритм шифрования, ключ (две половинки).
В отличии от ДВД (где все в одном флаконе), вторая половина ключа (т.н. "секретный ключ") у пользователя не хранится :)
Более того, "алгоритм" не скрывается, его описание можно найти в сети... А вот дешифровать, имея на руках все: файл, алгоритм, публичную половину... никак нельзя.
Простейший (в свободном доступе) алгоритм pgp (скоро 20 лет стукнет) имеет время взлома на 128-битном ключе что-то около 10**8 лет на современном быстродействии :)
Новый "ГОСТ" (от ФАПСИ) вообще крут невероятно, правда достать сложнее...
Да нет же, и про системы с симметричным и асимметричным ключом я слышал. ;)
Обобщая - чего-то в цепочке расшифровки у читера быть не должно. На данный момент архитектура решения (во как! :)) такова, что есть сэйв и есть приложение, которое все выполняет и все в себе содержит. С такой архитектурой делать приложение открытым, не скомпрометировав всю идею, не представляется возможным.

Но выход есть, дайте только сделать... А лучше - помогите.

А то, как в классике: "Джентельменов дофига, а вот местов нема..."
Так и тут - умных полно, а вот сделать...
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
Chameleon
Expert Wisdom
Expert Wisdom
Posts: 448
Joined: Sun Apr 03, 2005 21:39
Location: Russia, PTZ
Contact:

Post by Chameleon »

serger wrote:Дело в том, что сущностей три, а не две: зашифрованный объект, алгоритм шифрования, ключ (две половинки).
В отличии от ДВД (где все в одном флаконе), вторая половина ключа (т.н. "секретный ключ") у пользователя не хранится :)
Да, все именно так и сделано! Но ты предлагаешь отдать секретный ключ пользователю.
CMEPTb, Little Angel of Death
"Если ничто другое не помогает, прочтите, наконец, инструкцию."
- Аксиома Кана.
serger
Level 8 Hero
Level 8 Hero
Posts: 117
Joined: Tue Jul 26, 2005 18:57
Location: Moscow

Post by serger »

2Dalai, Chameleon:
Обобщая - чего-то в цепочке расшифровки у читера быть не должно... ...есть сэйв и есть приложение, которое все выполняет и все в себе содержит
Оттого, что мы обсуждаем несколько вопросов сразу, возникает путаница. Вопросов два: "посмотреть число сохранений" и "помешать s/l в офф-лайне".

По 1. Я согласен, что в том варианте, как это есть у вас сейчас, выдавать секр.ключ (видимо, встроенный в программу проверки) нельзя.

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

По 2. Помочь - а как помочь? Что именно делать - вы и сами представляете, значит, проектировщик вам не нужен. Исходники pgp у вас, видимо, есть, раз технология ассиметричных ключей знакома (но если в этом проблема - достану). Захотите ли вы тр...хаться с отправкой/получением уведомлений по почте для блокировки повторного прохождения карт - неясно. Гемору много, а контрдовод есть убойный: хотите "все по-честному" - играйте чистый он-лайн.
Программером к вам - дык, сколько воды утекло, когда последний раз такие штуки делались... качество получится низким. Все стали толстые и ленивые :(

2Accolon:
...игроку должна передаваться лишь та часть карты...
Архитектура у мультика HOMM IV уже сформирована. Хорошая или плохая, но она есть вот такая. Я думаю, что переделать игру до такой степени нереально, и гораздо сложнее, чем добавить некий кусок кода в модуль загрузки сейва.
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

2 serger
Все, теперь я тебя полностью понял ;)
Жаль, что "толстые и ленивые" :)
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
Post Reply