Android之安全機制

來源:互聯網
上載者:User

標籤: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之安全機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.