我們正處在一個Android應用程序,問答遊戲,這是我們想問題緩存+答案爲當用戶離線的決策。問題在於,我們需要在用戶回答問題之前隱藏用戶的這些數據。否則,作弊會很容易,這會損害遊戲。然後可以提取所有問題+答案並自動提交服務器API的答案。加密信息(用戶保護合理地訪問)
最方便的方法是在安裝時從我們的服務器檢索密鑰或密鑰,將其隱藏在「某處」,並將其用於與服務器的通信,以及用於加密問題+存儲答案。但顯然,將它隱藏在「某個地方」並不是一個安全的概念。
我研究了一下,似乎是可靠的加密是不是在這種情況下有可能,因爲該應用程序有「知道」的祕密(無論是證書,密碼+鹽,或其他),或至少其中它可以被發現,並且這可以通過反編譯來提取。但是,我們會很難做到這一點。
現在的問題是:您是否知道如何讓常規用戶難以從APK中檢索祕密 - 即使寫入自動密鑰提取器幾乎不可能?
我最好的猜測至今:
- 隱藏一些信息在數據庫中,並把它作爲鹽的關鍵
- 從設備添加的信息幾位鹽(IMEI,電子郵件地址,序列號,......) - 也許混淆鹽的應用方式可能難以獲得?
答案是什麼格式來解密問題2?錯誤答案的處罰是什麼?當然,對於任何多項選擇來說,這都很簡單。 –
答案要麼是選擇題枚舉(1到n正確的選擇),純文本,數字或圖像座標範圍(拼圖照片) - 或許還會有,甚至更多。當然,我們也應用確定答案是否正確的算法 - 比如明文答案的levenshtein距離。 – manmal
對於選擇題,你能做的最好的是簡單模糊處理;用戶可以隨時在模擬器中嘗試所有這些操作,並從錯誤答案的快照中恢復。 –