Шифрование и декомпиляция - PullRequest
       10

Шифрование и декомпиляция

1 голос
/ 21 декабря 2011

Я собираюсь выложить свое Android-приложение на рынок. Я недавно зашифровал все мои соединения сервер / клиент. Что меня интересует, так это если мои данные зашифрованы с использованием специального ключа, и если человек декомпилирует мой код и извлечет ключ, то стоит ли вообще шифровать данные в первую очередь? Мои коммуникации проходили намного быстрее, когда данные не были зашифрованы. С игрой, являющейся игрой в жанре экшн, лаг станет огромным «забавным убийцей», и по своему опыту я знаю, что это расстраивает. Я знаю, что шифрование делает приложение намного безопаснее, безопаснее для геймеров и сервера, но вызывает огромную задержку. Стоит ли безопасность снижения производительности? Стоит ли даже использовать шифрование, когда ваш код можно просто декомпилировать? Я уже использую Android Proguard, но если кто-то действительно захочет декомпилировать мой код, ему потребуется время, чтобы разобраться со всем этим мусором.

Ответы [ 3 ]

1 голос
/ 21 декабря 2011

Я думаю, что при таких допущениях безопасно работать.

  • Клиенту нельзя доверять. Когда-либо.
  • Сервер является официальным источником информации.

Не доверяйте данным, которые отправляют вам клиенты, проверяйте и проверяйте их (например, если кто-то пытается «телепортироваться» из одного угла карты в другой, отправляя измененное местоположение).

Принимайте только те данные, которые действительны.

Запрет мошенников.

Шифрование в порядке, но когда оно не вредит игре или игровому процессу (в вашем случае это наносит ущерб).

1 голос
/ 21 декабря 2011

Вы вставили ключ шифрования в код клиента?Что ж, это ничего не стоит, с другой стороны, шифрование того стоит, проблема в том, что вы выбрали неправильный способ сделать это.

0 голосов
/ 25 декабря 2011

Я бы, вероятно, использовал аутентификацию вместо шифрования (хэширование всех отправляемых данных, чтобы вы могли проверить их на стороне сервера).Это будет работать для обычной игровой информации, потому что нет особой необходимости в конфиденциальности.Если вы не отправляете личные данные пользователя, такие как имя, возраст, данные кредитной карты и т. Д., Я предлагаю вам использовать обычную аутентификацию, которая намного быстрее шифрования.Вы можете использовать действительно простые хеш-функции или если вы думаете, что ваша игра действительно мотивирует людей вмешиваться в нее, то вы можете использовать хеш-функции военного уровня, такие как SHA-256 или выше.Но независимо от того, какую схему хэширования вы используете, она должна занимать гораздо меньше времени и ресурсов, чем реализация правильной схемы шифрования.

...