Android Security - ป้องกันการ Hack SharedPreference บน android ในมุมมอง Developer

Secure Preferences

คือ Third party crypto library Secure Preferences ใช้ AES algorithm ในการเข้ารหัส Value 
ที่มาช่วยเพิ่มความปลอดภัยให้โค้ดชุดเดิมอย่าง Shared Preferences บน Android application 

ข้อมูลที่เก็บจะเป็นไฟล์นามสกุล xml อยู่บนมือถือที่ติดตั้งแอพพลิเคชั่น
Shared Preference โดยปกติจะไม่เข้ารหัส (PlainText) ทำให้แอพแอนดรอยด์นั้นสามารถถูกแฮกได้
จึงต้องมีคำว่า crypto เข้ามาเกี่ยวข้อง ,ซึ่ง library นี้ก็ไม่ได้ทำให้ปลอดภัยขึ้น 100%
แต่ก็การันตรีว่า app จะปลอดภัยในกรณีที่ทำการ root เครื่องมาเรียบร้อยแล้ว 

เราสามารถทำให้แอพปลอดภัยมากขึ้น(แต่ทำงานช้าลงจากที่ได้ทดสอบ) 
เมื่อเปรียบเทียบกับ Shared Preference ที่เก็บข้อมูลเป็นข้อความปกติ (ไม่มีการเข้ารหัส)
ที่สำคัญคือมันฟรี และ Open Source (นำมาพัฒนาต่อได้)
รวมถึงคอนเซ็บการใช้งานก็จะค่อยข้างเหมือนกับ Shared Preference ที่ Android มีมาให้แต่เดิม


Example

SharedPreferences prefs = new SecurePreferences(MainActivity.this);
Generated at runtime not stored in the backing pref file. (recommended)
SharedPreferences prefs = new SecurePreferences(context, "secret_key", "user_login");


Put Key &Value into secure preferences 

SharedPreferences prefs = new SecurePreferences(MainActivity.this);
Editor editor = spf.edit();
editor.putString("key_name", input);
editor.commit();


Get Value from key

String out = spf.getString("key_name", null);


XML Of SecurePreferences

<map>
    <string name="TuwbBU0IrAyL9znGBJ87uEi7pW0FwYwX8SZiiKnD2VZ7">
        pD2UhS2K2MNjWm8KzpFrag==:MWm7NgaEhvaxAvA9wASUl0HUHCVBWkn3c2T1WoSAE/g=rroijgeWEGRDFSS/hg
    </string>
    <string name="8lqCQqn73Uo84Rj">k73tlfVNYsPshll19ztma7U">
        pD2UhS2K2MNjWm8KzpFrag==:MWm7NgaEhvaxAvA9wASUl0HUHCVBWkn3c2T1WoSAE/g=:jWm8KzUl0HUHCVBWkn3c2T1WoSAE/g=
    </string>
</map>


Secure preferences [github] 
https://github.com/scottyab/secure-preferences