內容簡介
本書是一本系統講解Android套用開發安全的書籍。它首先介紹了Android系統的架構和安全機制,然後詳細說明了Android套用中存在的安全風險,並提出如何實現相應的安全控制以保護用戶的私密信息。同時,本書還深入講解了數據加密、認證技術以及企業級安全等概念。通過本書的介紹,希望讀者能夠了解如何鑑別哪些是敏感數據、以及如何使用Android API保證數據的機密性和完整性、如何構建企業級安全的套用以及如何實現客戶/服務端套用之間數據管理與傳輸的安全性等。
本書適用於Android套用開發人員、設計人員、測試人員、架構師、項目經理、安全諮詢顧問等,是一本實用的講解Android套用安全的教材和使用手冊。
目錄
第1章 Android架構
1.1Android架構的組件 3
1.1.1 核心 4
1.1.2 類庫 5
1.1.3Dalvik虛擬機 5
1.1.4 應用程式框架 6
1.1.5 應用程式 8
1.2 這本書是關於什麼的 9
1.3 安全 9
1.3.1 保護用戶 10
1.3.2 安全風險 10
1.4Android安全架構 12
1.4.1 特權分離 12
1.4.2 許可權 13
1.4.3 應用程式代碼簽名 14
1.5 總結 14
第2章 信息:套用的基礎
16
2.1 保護你的套用免受攻擊 17
2.1.1 間接攻擊 17
2.1.2 直接攻擊 19
2.2 項目1:“Proxim”和數據存儲 19
2.3 信息分類 27
2.3.1 什麼是個人信息 29
2.3.2 什麼是敏感信息 29
2.4 代碼分析 29
2.4.1 實施加密 30
2.4.2 加密結果 32
2.5 重構項目1 33
2.6 練習 35
2.7 總結 36
第3章 Android安全架構
37
3.1 重溫系統架構 38
3.2 理解許可權架構 40
3.2.1Content Provider 41
3.2.2Intent 46
3.3 許可權檢查 47
3.3.1 使用自定義許可權 48
3.3.2 保護級別 49
3.3.3 自定義許可權的示例代碼 50
3.4 總結 53
第4章 動手實踐(第一部分)
55
4.1Proxim套用 56
4.2 總結 64
第5章 數據存儲和密碼學 65
5.1 公鑰基礎設施(PKI) 67
5.2 密碼學中用到的術語 70
5.3 手機套用中的密碼學 71
5.3.1 對稱加密算法 72
5.3.2 密鑰生成 73
5.3.3 數據填充 74
5.3.4 分組密碼的幾種模式 75
5.4Android系統中的數據存儲 80
5.4.1 用戶數據共享 81
5.4.2 內部存儲 84
5.4.3SQLite資料庫 87
5.5 加密的數據存儲 93
5.6 總結 101
第6章 對話Web套用 103
6.1 搭建環境 105
6.2HTML、Web套用和Web服務 113
6.2.1 Web套用的組成 115
6.2.2Web套用用到的技術 117
6.3 OWASP與Web攻擊 124
6.4 認證技術 126
6.4.1 自簽名證書 131
6.4.2 中間人攻擊 132
6.4.3OAuth 134
6.4.4 加密的挑戰/應答 143
6.5 總結 143
第7章 企業級套用開發安全 144
7.1 安全的連線 145
7.2 企業應用程式 147
7.3 手機中間件 147
7.3.1 資料庫訪問 149
7.3.2 數據表示 155
7.4 總結 162
第8章 動手實踐(第二部分)
163
8.1 OAuth 164
8.1.1 獲得令牌 165
8.1.2 處理授權 166
8.2 挑戰與應答 178
8.3 總結 193
第9章 發布和出售你的套用
194
9.1 開發人員註冊 195
9.2 你的套用處在暴露中 197
9.2.1 可供下載的資源 198
9.2.2 逆向工程 202
9.3 應該進行許可驗證嗎 208
9.4 Android許可驗證庫 208
9.4.1 下載Google API Add-On 215
9.4.2 複製LVL檔案至單獨目錄217
9.4.3 導入LVL源檔案作為一個Library項目 217
9.4.4 在套用中構建和引入LVL 222
9.5 許可策略 229
9.6 有效利用LVL231
9.7 模糊處理 233
9.8 總結 236
第10章 惡意軟體和間諜軟體
238
10.1 惡意軟體的四個階段240
10.1.1 感染 240
10.1.2 破壞 240
10.1.3 傳播 241
10.1.4 泄露 241
10.2 案例學習1:政府批准的惡意軟體 241
10.2.1 感染 242
10.2.2 破壞 243
10.2.3 傳播 243
10.2.4 泄露 243
10.2.5 檢測 244
10.3 案例學習2: 零售惡意軟體——FlexiSPY 246
10.4 反取證248
10.5 總結 250
附錄AAndroid許可權常量 252
附錄B 如何使用Apache Wink創建RESTful Web Services 262
作者簡介
Sheran Gunasekera是一名擁有13年信息安全經驗的安全研究人員和軟體開發者。他是ZenConsult Pte.公司的研發主管,負責個人計算機和移動設備平台的安全研究。Sheran一直積極致力於BlackBerry和移動Java的研究,並且是揭露首個企業認可的惡意套用內部工作原理的白皮書的作者,這些惡意軟體被部署在阿聯電信運營商簽約用戶的移動設備上。他曾在中東、歐洲和亞太地區的安全會議上發表演講,提供有關針對移動設備的惡意軟體分析,以及針對Web和移動設備的安全軟體開發的培訓。他還在其有關安全的部落格上撰寫並發表文章
關於技術審閱者
Michael Thomas擁有超過20年的軟體開發的經驗,其間做過獨立開發者、團隊負責人、項目經理和工程副總裁。Michael擁有超過10年的移動設備相關的工作經驗。他的工作重點是在醫療領域中通過使用移動設備加速患者和醫療服務提供者之間的信息傳輸。
譯者介紹
王文君
王文君現就職於惠普軟體上海研發中心,擔任多個產品的安全架構師和安全講師。現為OWASP上海區負責人之一,作為演講嘉賓參加過2011年OWASP亞洲峰會以及2012年OWASP中國峰會,並且是CWASP認證專家組成員,同時也是2013年出版的《Web套用安全威脅與防治——基於OWASP Top 10與ESAPI》作者之一,擁有CISSP、 PMP、 ITIL等認證。王文君於2002年畢業於上海交通大學,擁有電氣工程碩士學位和電氣工程/涉外會計雙學士學位。
董歡歡
董歡歡畢業於上海復旦大學,擁有計算機信息技術管理學士學位。現就職於惠普軟體上海研發中心,擔任研發工程師。擁有7年的軟體研發經驗,在移動開發和設計方面有著豐富的經驗。2009年至今,從事Android應用程式設計和開發,對Android有較深刻的理解,開發有AltiGenMaxMobile Communicator、SkyDriveAssistant等Android套用。
前言
譯者序
不可否認,手機套用無論是在個人領域還是企業套用領域都變得舉足輕重,而其中,Android的份額最大。但是Android套用一直以來都有一個為用戶所詬病的問題,就是其安全性,因而構建一款成功的Android套用,安全的重要性不言而喻。所以作為一名開發人員,需要了解Android的安全風險有哪些,如何構建安全控制以規避這些安全隱患,而本書寫作的主要目的正是為了說明這些問題。
本書有幾大特點。首先,這是一本完全基於Android系統講述套用安全性的書籍。有關移動套用安全的書籍很多,但是具體討論Android系統安全性的卻很少。其次,本書內容不僅具備理論性,還提出了具體的設計指導,全書以實際的代碼介紹來講解抽象的理論知識,相信對於讀者而言,會具有很強的可操作性。
回想過去的幾個月,幾乎所有的空餘時間都在做此書的翻譯工作,我們對書中的內容做了嚴格的考證,並實際運行了書中的實例。比如在作者寫作本書時候的Google Play,已納入了GoogleNow;而Google App Engine相比作者寫作之時,地址和界面都已發生了變化,等等,所有的這一切我們都添加了譯者注。為了使讀者更容易理解和上手,對於第7章“企業級套用開發安全”,我們就補充了原書中沒有提及的伺服器端原始碼,幫助讀者直接參考。