Как предохраняться при общении клиента с сервером по http?
Если исходить из предположения что приложение может быть полностью декомпилировано, то и любой ваш алгоритм может быть полностью восстановлен. Все что вы можете сделать - это усложнить восстановление алгоритма. Пароли, сертификаты, https, ассиметричное шифрование, хранение полученного с сервера ключа в файловой системе и тд.
Если считать что приложение достаточно обфусцировано и восстановлению (в разумные сроки) не подлежит, то достаточно применить https, можно сertificate pinning для предотвращения реверса протокола через mitm.
Все глубокое имхо.
Ну и как совсем крайний случай - генерация уровня на сервере, передача на сервер нажатия всех кнопок, проверка на сервере прохождения путем анализа нажатия кнопок.
Что там за данные ,если не секрет?