Скрыть значение секретного ключа Air app

Я создаю проект Air (AS3). Он будет иметь собственную систему защиты. Все данные от сервера к приложению и обратно шифруются. Я использую секретный ключ, который прописан в серверных скриптах и ​​в приложении. Если хакер декомпилировал приложение, он может узнать секретный ключ. Секретный ключ — это строка (константа). Я не хочу делать обфускацию для своего приложения.

Как я могу скрыть этот секретный ключ? Могу ли я запутать только его? Могу ли я запутать отдельный класс AS3 секретными данными, а затем получить к нему доступ из основного кода, когда это необходимо?


person Astraport    schedule 28.06.2011    source источник
comment
Как вы шифруетесь - с помощью MD5/sha1 или подобного? И какие данные вы отправляете?   -  person Chris    schedule 28.06.2011
comment
БАЗА64. Передача данных для проверки лицензионного ключа.   -  person Astraport    schedule 28.06.2011


Ответы (2)


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

person alxx    schedule 28.06.2011

Если вы не хотите, чтобы кто-то декомпилировал приложение и нашел ключ, лучше всего никогда не помещать ключ в приложение. Вместо этого заставьте их пройти аутентификацию на вашем сервере (через TLS/SSL), чтобы получить ключ, который согласовывается во время выполнения для каждого клиента.

После согласования симметричного ключа вы можете использовать его для шифрования/дешифрования ваших данных для передачи. Конечно, это поднимает вопрос, почему бы вам просто не использовать SSL? Это уже дает вам сквозное шифрование между клиентом и сервером.

Конечно, злоумышленник все еще может извлечь ключ дешифрования из ОЗУ, когда приложение работает в его системе. Таким образом, они могут расшифровать данные между приложением, которое они запускают, и сервером, но не смогут расшифровать данные, передаваемые другими пользователями приложения (поскольку у каждого из них есть свой ключ).

Вы не можете поместить ключ в приложение каким-либо образом, иначе злоумышленник никогда не сможет найти его. Ваше приложение должно найти и использовать его; процесс вашего приложения приведет к нему злоумышленника. Так что не кладите его туда.

person Allan    schedule 20.07.2011