順德職業(yè)技術學院 龍子學 鐘軍強
目前Android平臺并沒有嚴格的應用權限審核機制,僅僅將應用的權限請求在安裝時展示給用戶,這樣的模式會導致惡意軟件的植入留下了隱患;另一方面在Android平臺的訪問控制是靜態(tài)的,無法根據控制策略庫的動態(tài)定制,而且Android平臺上所有軟件都是平級執(zhí)行,這造成了一般的安全軟件只能通過應用基本信息與庫的比對來判定其危害程度;Android系統(tǒng)不提供軟件行為監(jiān)控的接口,這也阻礙了以行為檢測為基礎的殺毒軟件無法移植。
針對上述問題,本文以Android系統(tǒng)為平臺,在Android的操作系統(tǒng)開發(fā)中如何制定和實施數(shù)據庫防御策略。
Android是基于linux內核,所以android核心部分是c語言編寫的。但是android提供的sdk是基于java語言的,也就是說大部分用戶所使用的應用程序是用java編寫的。java是解釋性語言,存在代碼被反編譯的隱患;建議用混淆器為proguard,proguard還可用來壓縮、優(yōu)化java字節(jié)碼,刪除無用的類、字段、方法、屬性、注釋等。
配置方法:
在Android.mk中設置LOCAL_PROGUARD_FLAG_FILES:=proguard.flags
packages/apps/Launcher2/proguard.flags的特定方法:
-keep class com.android.launcher2.Launcher{
public void previousScreen(android.view.View);
public void nextScreen(android.view.View);
public void launchHotSeat(android.view.View);}
-keep class com.android.launcher2.AllApps3D$Defines{
*;}
-keep class com.android.launcher2.ClippedImageView{
*;}
權限主要用來對應用的操作增加限制,防止惡意應用進行非法操作給用戶造成敏感數(shù)據泄漏和設備被非法控制,防止惡意收費等;所以在Android的Normal、Dangerous、signatureOrSystem、Signature接入權限,它框架層權限定義位置是:frameworks/base/core/res/AndroidManifest.xml權限可用于整個應用、Activity、Service等。
android:permissionGroup=“android.permission-group.ACCOUNTS” android:protectionLevel="normal“ android:description=“@string/permdesc_getAccounts” android:label="@string/permlab_getAccounts"/> android:label="@string/permgrouplab_storage“ android:description="@string/permgroupdesc_storage"/> 因共享用戶ID即共用一個進程Android源代碼樹攜帶的系統(tǒng)證書包括“media”、“platform”、“shared”、“testkey”等,其中“media”證書用于多媒體、下載場景中;“platform”證書用于系統(tǒng)場景中;“shared”證書用于啟動器、電話簿場景中;“testkey”證書用于開發(fā)場景中,這些證書位于build/target/product/security目錄下; 目前支持的“sharedUserId”屬性包括“com.android.cts.shareduid”、“com.android.cts.process.uidpid_test”、“android.uid.phone”等。常用的包括“android.uid.system”、“android.media”、“android.uid.shared”等。 設置應用權限: Android提供了多個方法可用于驗證調用方是否具有相應的權限。如果調用方擁有相應的權限,則權限驗證的返回值為PackageManager.PERMISSION_GRANTED否則返回PackageManager.PERMISSION_DENIED,如下示例: private int enforceAccessPermission(){ int ret= mContext.checkCallingOrSelfPermissio n("android.permission.BIND_WALLPAPER"); return ret;} Android的數(shù)字證書分調試模式和發(fā)布模式兩種,通過命令行和Eclipse可以生成發(fā)布模式的數(shù)字證書,在命令行方式下利用Keytool來生成數(shù)字證書,并利用Jarsigner來為APK進行數(shù)字簽名,使用ADT Export Wizard進行簽名,只有同一包名且采用同一數(shù)字證書的應用才被認為是同一個應用,數(shù)字證書的確保系統(tǒng)用升級和設置應用間通信的權限的安全。 keytool-genkey-v -keystore android.keystore-alias miaozl-keyalg RSA-validity 20000“keystore android.keystore”表示生成的證書為“android.keystore”,可以加上路徑(默認在用戶主目錄下);“alias miaozl”表示證書的別名是“miaozl”;“keyalg RSA”表示采用的RSA算法;“validity 20000”表示證書的有效期是20000天。另外通過keypass可以設置數(shù)字證書私鑰的密碼,通過keysize可以設置算法的位長,默認為1024比特,推薦2048比特及更長,通過storepass可以設置證書的密碼。 jarsigner-verbose-keystore android.keystore demo.apk接下來jarsigner會提示輸入密鑰庫的口令和證書別名的口令,全部輸入后,即可完成簽名。 Android加密算法有DES(對稱)、3DES(對稱)、RSA(非對稱)、MD5、RC2/RC4(對稱)、IDEA、AES、BLOWFISH等,而Web服務(HTTP層),三種手段WS-Security、SSL、數(shù)字簽名。 Android采用的SQLite目前采用明文存儲數(shù)據;安全涉及加密、讀寫、搜索等。 讀寫權限示例: android:name=".provider.AttachmentPr ovider"android:authorities="com.android.email.attachmentprovider" android:multiprocess="true" android:grantUriPermissions="true“ android:readPermission="com.android.email.permission.READ_ATTACHMENT"/> 數(shù)據庫安全--搜索例: android:readPermission="android.permission.READ_SMS" android:authorities="com.android.mms.SuggestionsProvider"> android:pathPrefix="/search_suggest_query" android:readPermission="android.permission.GLOBAL_SEARCH"> android:pathPrefix="/search_suggest_shortcut"android:readPermission="android.permission.GLOBAL_SEARCH"/> Android在權限管理上應用了Linux的ACL(Access Control List)權限機制,而非早期Unix采用的UGO權限機制。 在系統(tǒng)運行時,最外層安全保護是由Linux系統(tǒng)提供的,其中system.img所在的分區(qū)是只讀的,不允許用戶寫入,而data.img所在的分區(qū)是可讀寫的,用于存放用戶數(shù)據。 分區(qū)的用戶權限在init.rc中定義。 單獨文件訪問權限控制分群組、用戶、權限,權限分可讀、可寫、可執(zhí)行,命令:chownchgrpchmod。 隨著智能手機的超速發(fā)展,Android智能手機操作系統(tǒng)越來越被人們所關注及使用,數(shù)據安全性已經成為使用者的關心問題,本文通過對Android系統(tǒng)的各種安全機制進行了闡述,并針對不同的安全機制提供其解決方案,希望能為開發(fā)者提高Android系統(tǒng)安全性提供一點幫助。 [1]陳益強.簡析Android系統(tǒng)的安全性能[A].信息系統(tǒng)工程,2011(9). [2]雷靈光.Android系統(tǒng)代碼簽名驗證機制的實現(xiàn)及安全性分析[A].信息網絡安全,2012(8). [3]符易陽,周丹平.Android安全機制分析[J].信息網絡安全,2011(9).2.應用權限的設置
3.權限驗證
三、數(shù)字證書實現(xiàn)
1.Keytool生成數(shù)字證書
2.實現(xiàn)Jarsigner進行數(shù)字簽名
四、網絡及數(shù)據安全
1.網絡數(shù)據加密算法
2.數(shù)據安全
五、文件訪問控制
1.分區(qū)層面
2.單獨文件
六、結語