標籤:des android blog http io os 使用 ar java
根據android四大架構來解說安全機制
java不同於C/C++,java是解釋性語言,存在代碼被反編譯的隱患;預設混淆器為proguard,最新版本為4.7; proguard還可用來壓縮、最佳化java位元組碼,刪除無用的類、欄位、方法、屬性、注釋等。配置方法為在Android.mk中設定LOCAL_PROGUARD_FLAG_FILES := proguard.flagspackages/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 { *;}
許可權主要用來對應用的操作增加限制,防止惡意應用進行非法操作給使用者造成敏感性資料泄漏和裝置被非法控制,防止惡意收費等;Android的接入許可權Normal許可權Dangerous許可權signatureOrSystem許可權Signature許可權架構層許可權定義位置frameworks/base/core/res/ AndroidManifest.xml許可權可用於整個應用、Activity、Service等。建立接入許可權和許可權組<permission android:name=“android.permission.GET_ACCOUNTS” android:permissionGroup=“android.permission-group.ACCOUNTS”android:protectionLevel="normal“android:description=“@string/permdesc_getAccounts”android:label="@string/permlab_getAccounts" />
<permission-group android:name=“android.permission-group.STORAGE”android:label="@string/permgrouplab_storage“android:description="@string/permgroupdesc_storage" />
共用使用者ID即共用一個進程Android原始碼樹攜帶的系統認證包括“media”、“platform”、“shared”、“testkey”等,其中“media”認證用於多媒體、下載情境中;“platform”認證用於系統情境中;“shared”認證用於啟動器、電話簿情境中;“testkey”認證用於開發情境中,這些認證位於build/target/product/security目錄下;目前支援的“sharedUserId”屬性包括“com.android.cts.shareduid”、“com.android.cts.process.uidpid_test”、“android.uid.system”、“com.android.uid.test”、“android.uid.calendar” 、“android.media”、“com.android.framework.externalsharedpermstestapp”、“android.uid.shared”、“android.uid.phone”等。常用的包括“android.uid.system”、“android.media”、“android.uid.shared”等。設定應用許可權<uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />許可權驗證Android提供了多個方法可用於驗證調用方是否具有相應的許可權。如果調用方擁有相應的許可權,則許可權驗證的傳回值為PackageManager. PERMISSION_GRANTED否則返回PackageManager.PERMISSION_DENIED。樣本private int enforceAccessPermission() {int ret =mContext.checkCallingOrSelfPermission("android.permission.BIND_WALLPAPER ");return ret;}
Android的數位憑證是免費的,分偵錯模式和發布模式兩種;通過命令列和Eclipse可以產生發布模式的數位憑證;在命令列方式下利用Keytool來產生數位憑證,並利用Jarsigner來為APK進行數位簽章;使用ADT Export Wizard進行簽名;只有同一包名且採用同一數位憑證的應用才被認為是同一個應用;數位憑證的最大用途是應用升級和設定應用間通訊的許可權;Keytool產生數位憑證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可以設定數位憑證私密金鑰的密碼,通過keysize可以設定演算法的位長,預設為1024位元,推薦2048位元及更長,通過storepass可以設定認證的密碼。Jarsigner進行數位簽章jarsigner -verbose -keystore android.keystore demo.apk 認證別名接下來jarsigner會提示輸入密鑰庫的口令和認證別名的口令,全部輸入後,即可完成簽名查看數位憑證簽名#jarsigner -verify -verbose -certs demo.apk
密碼編譯演算法(敏感性資料)DES(對稱)、3DES(對稱)、RSA(非對稱)、MD5、RC2/RC4(對稱)、IDEA、AES、BLOWFISH等Web服務(HTTP層)三種手段WS-Security、SSL、數位簽章。目前ksoap不支援WS-SecurityTCP層SSL、TSL資料連結層WAPI
Android採用的SQLite目前採用明文儲存資料;安全涉及加密、讀寫、搜尋等。加密方法密碼編譯演算法(實現方法參考網上)使用權限設定使用權限設定android:permissionandroid:readPermissionandroid:writePermission讀寫權限樣本<provider android:name=".provider.AttachmentProvider" android:authorities="com.android.email.attachmentprovider" android:multiprocess="true" android:grantUriPermissions="true“ android:readPermission="com.android.email.permission.READ_ATTACHMENT"/>
<provider android:name="SuggestionsProvider" android:readPermission="android.permission.READ_SMS" android:authorities="com.android.mms.SuggestionsProvider" > <path-permission android:pathPrefix="/search_suggest_query" android:readPermission="android.permission.GLOBAL_SEARCH" /> <path-permission android:pathPrefix="/search_suggest_shortcut" android:readPermission="android.permission.GLOBAL_SEARCH" /> </provider>
通常情況下,每個應用均擁有一個虛擬機器。通常情況下,應用間無法相互訪問私人資料。訪問資料的方法為:檔案方式資料庫許可權開放設定檔開放Intent通訊
Android在許可權管理上應用了Linux的ACL(Access Control List)許可權機制,而非早期Unix採用的UGO許可權機制。分區層面在系統運行時,最外層安全保護是由Linux系統提供的,其中system.img所在的分區是唯讀,不允許使用者寫入,而data.img所在的分區是可讀寫的,用於存放使用者資料。分區的使用者權限在init.rc中定義。單獨檔案單獨檔案存取權限控制分群組、使用者、許可權。許可權分可讀、可寫、可執行。命令:chown\chgrp\chmod。 轉自:http://blog.csdn.net/mad1989/article/details/16886189
Android之安全機制