本地金鑰的安全
1、將金鑰分成不同的幾段,有的儲存在檔案中、有的儲存在程式碼中,最後將他們拼接起來,可以將整個操作寫的很複雜,這因為還是在java層,逆向者只要花點時間,也很容易被逆向。 2、用ndk開發,將金鑰放在so檔案,加密解密操作都在so檔案裡,這從一定程度上提高了的安全性,擋住了一些逆向者,但是有經驗的逆向者還是會使用IDA破解的。 3、在so檔案中不儲存金鑰,so檔案中對金鑰進行加解密操作,將金鑰加密後的金鑰命名為其他普通檔案,存放在assets目錄下或者其他目錄下,接著在so檔案裡面新增無關程式碼(花指令),雖然可以增加靜態分析難度,但是可以使用動態調式的方法,追蹤加密解密函式,也可以查詢到金鑰內容。
**白盒加密技術的核心思想是把祕鑰隱藏起來, 加密執行過程中, 記憶體中不會出現祕鑰的值. 現在通用的技術是查詢表技術, 即把祕鑰隱藏在查詢表中。白盒加密的攻擊需要從數學理論上去分析, 這無疑會極大增加破解難度。白盒加密的安全度目前來看是可以值得信任的, 當然這個世界上沒有絕對的安全, 白盒加密也會被破, 就是攻擊成本的問題啦. **