![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2002
Сообщений: 8
|
Сорри за пост, но не могу пройти мимо..
![]() 1) Надежный путь СУЩЕСТВУЕТ, и имя ему - RSA. Можно много изобретать велосипедов, но в конце-концов придете именно к этому (Если, конечно, придете, а не застрянете раньше, все-таки не у всех научная степень по математике..) 2) В конкретной задаче (флеш-игра и отправка очков на сервер) вполне можно обойтись элементарным, ни капельки не криптографически стойким алгоритмом (так что обсуждения про MD5 здесь не к месту), а именно брать Score, умножать его на какое-то простое число A и прибавлять другое число B (B может не быть простым, но должно быть меньше A). И итоговую сумму отправлять на сервер, а на сервере уже размещать всю логику по защите от взлома, причем логика эта сведется к двум элементарным проверкам: Что присланное число при делении на A дает в остатке B Что приславший его не был замечен в читерстве до этого. Второй пункт, правда, не совсем элементарный, тут можно на самом деле много всего проверять и учитывать (IP, User-Agent, сессию, логин и т.д.) но в любом случае это делается НА СЕРВЕРЕ, а значит злоумышленник не имеет доступа к коду и не знает, что там происходит. И даже досконально разобравшись в клиентском алгоритме, будет долго ломать голову, почему же все-таки оно не работает.. (потому что копать будет не там). Насчет использования вместо y=Ax+B других функций (md5, sha1 и так далее) - ДО ЖОПЫ. Все равно код находится на стороне клиента (со всеми паролями и исходными значениями), все равно его можно повторить в "своей" флешке, все равно это НИКОГДА не будет криптографически стойко, поэтому разницы от использования той или иной функции на практике нет. Чтобы усложнить хакеру жизнь, можно числа A и B не хранить непосредственно в коде, а "вычислять" долгим и запутанным алгоритмом (еще и размазанным по всему мувику, а не содержащемуся в одном месте). Причем можно сначала писать этот алгоритм от фонаря, а потом просто взять число, которое он вернет - а хакеру придется весь алгоритм разгребать (ну, или выдрать декомпайлером, так что повторюсь, лучше не хранить весь код в одном фрейме)... Но еще раз говорю, это лишь усложнит ему задачу, но НЕ СДЕЛАЕТ ЕЕ НЕВЫПОЛНИМОЙ. Если нужен надежный путь - смотрите начало поста. Правда, RSA придется реализовывать самостоятельно (я на AS еще готовой реализации не видел, но есть куча на яваскрипте - переделать займет полчаса) и работать он будет ооочень медленно, учитывая как вообще все на флеше работает. Но насколько я знаю это единственное решение данной задачи (задача-то частая, на самом деле), которое изобрело человечество. Upd: Кстати, вот еще подумал, что асимметричный ключ вообще-то реализован в https:// - так что может быть можно отсылать данные с помощью GetURL, а не LoadVariables() - и тогда стандартная PHP-шная реализация сессий в общем и будет гарантом аутентичности данных.. Последний раз редактировалось fogx; 20.08.2006 в 14:01. |
![]() |
Часовой пояс GMT +4, время: 19:32. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|