如何更好地使用 Android 手機(2022)
聲明:
本文為轉載文章,原作者 Radow。
本站在獲得原作者授權後轉載。
請注意:本文章採用與本站其他文章相不同的共享創意特許條款,詳細請留意腳註。
前言
現在是 2022 年,已經走過 13 個年頭的 Android,在各方面都有了長足的發展。經過審慎評估、採取了恰當的安全措施的 Android 手機可以達到乃至超越 iPhone 的安全性和隱私保護能力。然而,絕大多數的 Android 手機使用者並沒有安全、隱私意識,不知道如何讓自己的 Android 手機更安全、更保護隱私,或儘管對相關話題略有了解,卻並未採取最佳實踐。特別地,在中國大陸,安全與隱私的現狀尤為嚴重。筆者試圖在本文簡要介紹一些被普遍認可的策略和實踐,若讀者採取這些策略和實踐,則可能會提高 Android 手機的安全性,使其更好地保護個人隱私。
本文適合所有有意於改善自己數字生活、強化安全與隱私性的中國大陸 Android 手機用户閲讀。如果讀者認為本文過於複雜,筆者推薦切換到 iOS 以獲取相對更好的安全與隱私保護。
本文只是一份提綱,而非指引。筆者也不保證文中的內容均是正確的、適合任何一位讀者的。
威脅模型分析
智能手機是當今社會的重要節點,重要性無需多言。在中國大陸,智能手機被廣泛用作支付、交易終端和身份驗證終端,這意味着有大量敏感數據存儲於智能手機當中。同時,智能手機承載着記錄生活、網絡社交、娛樂等功能,在使用這些功能時,智能手機大多數時候作為客户端而存在,本地計算、存儲的加固需求不迫切,而保護互聯網服務的訪問憑證,使其對用户保持高可用性更加重要。同時,在此模型下,我們要求對使用的互聯網服務賦予高級別的信任。
關於訪問憑證,考慮到中國大陸的互聯網服務普遍依賴 SMS 雙因素認證(事實上,它很多時候根本就是作為唯一的認證因素),需要對 SMS 接收進行加固,減少攻擊點位;但同時,應當儘可能考慮採用更安全的多因素認證模式。
中國大陸的互聯網服務客户端應用程序通常會收集大量用户數據,對用户隱私安全構成直接威脅。在以往,Android 的權限管理機制有着諸多問題,且強制索取敏感權限的應用程序大量存在。如今,上述問題已經得到了很大程度的改善,但應用依然可以通過內置的各種追蹤框架和代碼跟蹤用户行為。考慮到中國大陸的互聯網服務對手機號碼這一高度身份關聯因子的強制追求,互聯網匿名性的優先級可以適當下調,安全措施的重點可以放在降低用户畫像的精確性、減少不必要的數據共享等方面。
哪怕不是全部,也有絕大多數的中國大陸 Android 手機制造商對上游 Android 開源計劃(Android Open Source Project,AOSP)的代碼進行深度修改。其中涉及到的絕大多數代碼是專有、閉源的,且擁有系統底層的權限,其數據收集行為更有侵略性,可以説是「監守自盜」。應當假定這些加入專有、閉源代碼的操作系統是不安全的。
最佳實踐
購買決策
為了避免出現「監守自盜」的問題,我們應當選用對安全、隱私、自由擁有良好支持的 Android 手機。這意味着手機的硬件性能不應被視作第一考量因素,而應當自軟件向硬件,選擇可以使用注重安全、隱私的操作系統的手機。
操作系統的選擇
預備知識:啓動時驗證(Verified Boot)
啓動時驗證是 Android 4.4 引入的安全特性,它能確保硬件執行的所有二進制代碼均來自可信的來源。它可建立一條從受硬件保護的信任根到引導加載程序,再到 boot
分區和其他已驗證分區(包括 system
、vendor
和可選的 oem
分區)的完整信任鏈。在設備啓動過程中,無論是在哪個階段,都會在進入下一個階段之前先驗證下一個階段的完整性和真實性。
若假定各分區的執行代碼本身沒有安全問題,則具備啓動時驗證的 Android 手機可以確保啓動的一致性和安全性,有效抵禦惡意注入代碼。因此,對啓動時驗證的良好支持是必須考慮的因素。
出於明顯的利益考量,大多數 Android OEM(Original equipment manufacturer,原始設備製造商)不會為第三方的操作系統提供簽名校驗,哪怕其自由、開源且經過獨立審計。因此,如將啓動時驗證作為必須,大多數時候用户只能選擇使用廠商提供的操作系統。Google、FairPhone 等是少數例外,且擁有廣泛的社區支持。筆者推薦選擇它們。
筆者推薦使用以下操作系統:
GrapheneOS
GrapheneOS 是目前兼顧隱私保護與安全性的最佳選項。它基於 AOSP 上游加入了諸多改進,包括加強的應用運行時、應用沙箱、內存分配機制、系統內核、網絡安全、傳感器權限管理、數據加密等等。同樣關鍵的是,GrapheneOS 系統經過二進制文件簽名,因此支持啓動時驗證。這當然意味着用户可以再次上鎖 bootloader,而由於整個啓動流程經過安全性驗證,它能夠達到 Android 設備應有的安全性標準。
GrapheneOS 團隊對安全性的要求極高。因此,目前只有 Google Pixel 系列手機受到 GrapheneOS 的支持,且對於 Google 不再維護的 Pixel 手機(如 Pixel 2),GrapheneOS 也不再繼續維護。
CalyxOS
CalyxOS 基於 AOSP 上游加入了諸多改進,包括內置的防火牆 Datura、網絡安全性改進(如對 Tor 的良好支持和私有 DNS)、高級權限管理、內置各類隱私通信應用(如 Signal)等。與 GrapheneOS 一樣,CalyxOS 也支持啓動時驗證,達到了 Android 設備應有的安全性標準。
CalyxOS 也僅支持 Google Pixel 系列手機。對於 Google 不再維護的 Pixel 手機,CalyxOS 會提供相比 GrapheneOS 稍長的維護時間,但最終也會放棄。
一個例外是小米 Mi A2(小米 6X 參與 Android One 項目的特別版本),如果讀者恰好擁有 Mi A2,可以嚐鮮,但由於其已經很長時間不再得到硬件上游維護,其安全性無法得到保證。
DivestOS
DivestOS 是 LineageOS 的一個 fork,它目標支持的手機較 GrapheneOS 等要更多一些。其擁有一個經過安全性和隱私保護加強的網頁瀏覽器和 WebView,內置一個支持端到端加密的 SMS 應用、全局攔截廣告與追蹤器的 hosts 文件,還擁有一個自動內核 KVE 修補程序,能夠在第一時間修復已發現並公佈的 Linux 內核安全問題。同時,DivestOS 也引入了不少來自 GrapheneOS 和 CalyxOS 的安全增強措施。DivestOS 支持啓動時驗證,但實際支持情況依機型而異。
DivestOS 目前主要維護的是接近或已經不再被製造商維護的手機。目前對啓動時驗證特性支持良好的有:一加 7 Pro/7T/7T Pro/6/6T/5/5T、Google Pixel 3/2/1、Essential Phone、FairPhone 4 等。DivestOS 的安全性整體而言不如 GrapheneOS 和 CalyxOS,但也不失為一個備選項。
LineageOS 和其他「第三方 ROM」
它們大多不支持上鎖 bootloader,啓動時驗證也無從談起。使用它們也許提升了隱私,但需要在安全性上做出巨大的妥協,因此應當謹慎考慮——事實上,妥協安全來換取隱私,其結果有時是隱私與安全雙雙失去。同時,由於缺少來自硬件製造商上游的維護,部分系統有時連一些基本的體驗(如藍牙、VoLTE 等)的支持都會存在問題。
如果讀者認為做出安全性妥協是可以接受的,則可以考慮 LineageOS。LineageOS 久負盛名,其官方分支對可用性的要求相對更高,因此是其中較好的選項。其他「第三方 ROM」當然有着較高的可玩性,但即使是對 Android 有着最深入瞭解的愛好者,也應當避免在其中存儲任何敏感信息。
保護隱私的一些 Android 特性
讀者有必要對這些特性有基本認識。
多用户支持
Android 支持多用户的特性,這是在 Android 系統中實現應用程序隔離最安全、同時也最容易理解的機制。每一個用户的數據都各自加密,無法互相讀取;機主作為「管理員」,可以對用户的權限予以限制。不過,Android 無法使兩個用户同時運行程序,因此使用上有一定的不便之處。
工作資料
這是一項為企業管理而設計的特性,允許在單個用户資料當中單獨創建一個「工作資料」區域,實現工作與個人事務的分離。企業的管理員可以對工作資料的行為予以管理,但無法讀取個人資料的內容。目前,使用這項功能需要一個設備控制器(device controller),不過 CalyxOS 提供了內置的設備控制器。
如果沒有內置,筆者推薦使用 Island(煉妖壺,由 Oasis Feng 開發)、Insular(Island 的一個 fork)和 Shelter 來創建工作資料。這些應用程序均為開源程序,其安全性可以獨立驗證。請不要使用專有、閉源的應用程序創建工作資料,因為設備控制器擁有對工作資料內全部應用和數據的控制權,它們必須是可信的。
Island、Insular 和 Shelter 的主要區別:
- Island 含有 Google Analytics 等專有代碼用於遙測(telemetry)獲取使用數據,並且聯網。Insular 和 Shelter 均不聯網。
- Island 和 Insular 支持限制 adb 終端權限,防止外部侵入者通過 USB 讀寫數據;支持凍結個人資料中的應用;Shelter 不支持。
- Island 支持與同開發者的「綠色守護」(Greenify)聯動凍結應用程序;Shelter 自身支持類似的功能;Insular 不支持。
- Shelter 支持阻止對聯繫人(Contacts)的搜索,這可能會非常有用。Island 和 Insular 不支持。
Google 正在為 Android 開發使用 Google Workspace 添加工作資料的能力,但很顯然,這需要使用者信賴 Google。
請注意:單用户中的個人/工作資料對應用程序的隔離程度不如多用户的方案,存在一定的風險。讀者務必仔細評估自身的威脅模型,進而考慮是否採取更進一步的措施。
AppOpsManager
(App-Ops)
於 Android 4.3 引入的權限管理機制 AppOpsManager
,可用於權限訪問控制與跟蹤。儘管 Google 已於 Android 4.4.2 阻止了普通用户對其訪問修改,但這一機制仍然存在,且是 Android 權限管理中重要的一環。
通過一些輔助手段,用户依然可以修改 AppOps
的行為。其中一種限制選項是MODE_IGNORED
(忽略),可以讓系統為應用返回空數據。筆者強烈推薦對 READ_CLIPBOARD
和 WRITE_CLIPBOARD
予以限制,因為剪貼板常常包含隱私數據。
展望:Android 13
Android 13「提拉米蘇」在隱私方面做出了兩項重要改進,儘管中國大陸的 Android app 未必會在乎:
- 照片選擇器(
ACTION_PICK_IMAGES
):原生的、類似 iOS 提供的照片選擇器。分享照片與視頻時,將不再需要賦予應用過多權限。 - 附近的 Wi-Fi 設備(
NEARBY_WIFI_DEVICES
):通過此項權限的限制,若一個 Android 程序只需要連接到 Wi-Fi,它可不必對其他可被檢索的 Wi-Fi 接入點有了解。
應用商店
在中國大陸,Google Play 並沒有佔據多少應用商店的市場份額。這一份額主要由 OEM 自己運營的應用商店,以及較知名的應用商店(如騰訊應用寶等)所佔據。這些應用商店均不是隱私友好的,筆者不推薦使用。筆者建議直接從可信的 Android app 託管網站獲取 .apk 文件。大多數中國大陸的互聯網服務客户端 app 均具備自我更新的能力,可直接使用之。
F-Droid
F-Droid 在 Android 社區當中普遍被認為是一個關注隱私、自由的應用倉庫平台。筆者也推薦在 F-Droid 獲取一些不錯的應用,但請注意:優先選用開發者自有的 F-Droid 分發倉庫。其他的倉庫在版本更新上可能不及預期。
Google Play
Google 對隱私的侵害是顯而易見的。筆者不推薦在 Android 手機上使用完整、具備高權限的 Google Play 框架。GrapheneOS 擁有一個沙箱化的 Google Play 框架,筆者推薦使用;CalyxOS 則採用了 microG,它是自由、開源的 Google Play 替代品,但可能與一些 Google 應用不兼容,且 microG 方案的安全性低於 GrapheneOS 方案。
筆者推薦從 ApkMirror 獲取 .apk 文件安裝,然後使用 GrapheneOS 的 Google Play Store 保持應用更新。作為替代,可以使用 Aurora Store,但請注意 Aurora Store 的「匿名」功能無法讓用户真正匿名。
廣告與追蹤器
筆者不推薦使用任何本地廣告與跟蹤器攔截程序。在理想的安全模型下,應當由可信任的 DNS 來完成這一任務。
筆者推薦的具備廣告、追蹤器攔截能力的 DNS:
- NextDNS
- AdGuard DNS
TrackerControl、AdAway、RethinkDNS 等正常工作需要藉助一個虛擬專用網連接,這可能會與用户使用的其他虛擬專用網相沖突,因為 Android 只允許同時連接一個。TrackerControl 的屏蔽顆粒度不足,會使得大量常用應用無法工作;AdAway 具有 root 工作模式,但大多數安全專家不推薦獲取 root 權限。
如果使用 Firefox for Android(筆者暫時不推薦使用),可以通過 uBlock Origin 形成補充。
一些實用應用
筆記
筆記是人記錄思想的重要工具,應當被嚴肅對待。筆者不推薦任何要求聯網而不提供任何端到端加密可能的筆記 app。筆者推薦以下筆記 app:
- Standard Notes
- Joplin
- Notally
- Obsidian
密碼管理器,雙因素驗證器
通過密碼管理器,用户不僅減少了輸入密碼的繁瑣步驟,還可以方便地審視自己的網絡足跡。筆者推薦以下密碼管理器:
- KeePass 兼容的密碼管理器,如 KeePass DX、AuthPass
- Bitwarden
- 1Password
筆者推薦以下 TOTP 雙因素驗證器:
- Aegis
請注意:使用密碼管理器存儲 TOTP 密鑰是非常錯誤的實踐,會顯著降低安全性。
瀏覽器與 WebView
選擇合適的網頁瀏覽器,對於隱私與安全十分重要。
如果讀者使用 GrapheneOS,筆者推薦使用其自帶的瀏覽器 Vanadium。如果讀者並非使用 GrapheneOS,筆者推薦使用 Bromite。它們都具備非常高的默認隱私、安全保護能力。Bromite 還實驗性地支持部分 greasemonkey 腳本。
保持 WebView 的更新非常重要。Android app 打開的網頁鏈接通常都會調用 WebView,若 WebView 版本過低(這在中國大陸銷售的智能手機中非常常見),則會為網頁惡意代碼提供可乘之機。GrapheneOS、CalyxOS、DivestOS 等均擁有加固且保持更新的 WebView。
儘量避免使用騰訊修改的 X5 內核瀏覽器及其 WebView。
大量使用拓展與插件不是最佳實踐,又及 Firefox for Android 的問題
讀者可能會發現,筆者沒有推薦使用 Firefox。Firefox 的支持者通常會以 Firefox 由非營利的 Mozilla 開發、支持海量拓展與插件、採用獨立的 Gecko 內核等為推薦理由,但很遺憾的是,目前這些都不能使人足夠推薦 Firefox for Android。
首先,將隱私保護寄託於大量地使用隱私保護拓展,幾乎就像是為了治病吃下大量不同種類的藥物。哪怕不考慮部分拓展本身就在侵犯隱私,大多數隱私保護拓展的設計也是缺乏明確的威脅建模,對隱私保護的意義有限。使用過多的拓展,反而會留下更多的「識別指紋」,使得跨網站的追蹤器更容易對用户進行畫像。
讀者不應當考慮以下任意一個拓展,儘管讀者會發現它們大多被列入了 Mozilla 的「推薦拓展列表」:
- HTTPS Everywhere:主流瀏覽器均已支持僅 HTTPS 模式,而開發該拓展的 EFF 表示該拓展已於 2021 年底被放棄。
- Decentraleyes、LocalCDN:由於 Firefox 86 已經引入了完全 Cookie 保護(Total Cookie Protection),CDN 訪問請求所引入的 cookie 已經被有效隔離。網站執行的 JavaScript 檢測代碼能夠識別出用户使用了這類拓展,因此其實際上拓寬了攻擊位面。
- Privacy Badger:其保護效力同樣被完全 Cookie 保護所替代。Privacy Badger 此前採取本地學習的方式探測潛在的追蹤器,但其探測方式已經被證明是存在安全問題、極其容易被反偵測的,此後 Privacy Badger 改為默認採用一個固定的追蹤器列表,意義大減。
- uMartix:已經長期缺乏維護,不適合繼續使用,且其功效容易被替代。
- Cookie Auto Delete:完全 Cookie 保護令其毫無意義。事實上,這一拓展根本就與完全 Cookie 保護不兼容。
大體上,安裝任何 WebExtension 拓展都可能會增加用户被建立識別指紋、乃至被攻擊的可能性。不過,仍然有少量拓展值得被推薦:
- uBlock Origin:Firefox 上最佳的內容屏蔽工具。
- Firefox 多賬户容器:可以被用於登錄多個網絡賬户。
- CanvasBlocker:可以降低被建立高識別度指紋的概率。一個替代做法(這一做法更加徹底)是啓用 Firefox 的實驗性功能:在
about:config
中打開privacy.resistFingerprinting
,不過這可能會使得部分網頁無法正確顯示。
在桌面端,Firefox 是一個優秀的網頁瀏覽器。在 Android 平台,Firefox 採用了為 Android 平台特性而設計的 GeckoView 引擎。然而,採用這一引擎的 Firefox for Android 目前仍然沒有啓用 android:isolatedProcess
(進程隔離)策略(Mozilla 開發成員表示這一特性將在今年晚些時候登場),也沒有實現站點間隔離。事實上,就連僅 HTTPS 模式這一基本的特性,都遲至 Fenix 版本 100 才得以全面實行。在這些問題解決之前,Firefox for Android 不能被視作一個足夠安全的網頁瀏覽器。
近日,Mozilla 限制了中國大陸用户獲取 uBlock Origin 等廣告屏蔽拓展的能力。在桌面版 Firefox 上,可以通過旁加載(sideload)的方式安裝 uBlock Origin;但在 Firefox for Android 上,目前沒有解決方案。這進一步降低了 Firefox for Android 對中國大陸 Android 用户的吸引力。
RSS 閲讀器
筆者推薦以下 RSS 閲讀器客户端:
- Feeder
- Readrops
筆者推薦以下 RSS 服務:
- Tiny Tiny RSS
- FreshRSS
其他值得推薦的實用應用
- Syncthing:同步
- Jitsi:視頻或語音會議
- Nextcloud:雲服務
- GadgetBridge:連接部分可穿戴設備
實用建議
Root
大多數 Android 安全專家不推薦個人用户獲取 Android 手機的 root 權限。獲取 root 權限會從根本上破壞 Android 的安全機制。
獲取 root 權限通常需要對 Android 啓動分區(boot
)或恢復分區(recovery
)進行改動,這破壞了系統文件的完整性,使得啓動時驗證無法實行。同時,root 權限的暴露可能會使得惡意代碼繞過 Android 自身的權限機制和 SELinux 策略,威脅用户安全。此時,隱私自然無從談起。整體而言,獲取 root 權限是一種增加攻擊表面的行為。
機制比人更加可靠。
獲取 root 權限當然能夠提供一些好處,比如你可以使用 AdAway 等工具攔截追蹤器和廣告,使用類似「存儲空間隔離」的應用,通過 Magisk/Zygisk 模塊來實現各類增強功能等。但它們提供的好處真的值得做出 root 這樣的安全性犧牲嗎?讀者當然可以有自己的判斷,但筆者認為這是不值得的。
相比 AdAway,筆者更推薦使用私有 DNS(如 NextDNS、Adguard DNS)方案攔截追蹤器和廣告。詳情請看本文「廣告與追蹤器」部分。
大多數 app 並不需要訪問存儲空間的權限也能正常使用。對於需要分享圖片的社交類應用,使用 Android 的「分享」功能也可以部分解決(一個例外是微信,可以嘗試 Open2Share)。如果一定要給那些沒有使用新的相冊讀取 API 的應用授予存儲空間管理權限,將其單獨放置在工作資料中即可。
如果確實需要 Root……
在使用任何 Magisk/Zygisk/Ruri 模塊前,確保對其工作原理和技術細節有充分了解;考慮另行購買一部 iOS 用來存放任何敏感或涉及金融交易的應用程序;假定你的設備是不安全的,以此為基礎構建威脅模型。
SafetyNet
通過啓動時驗證的設備可以通過基本的 SafetyNet,但可能無法通過高級的 SafetyNet。使用 Magisk/Zygisk 進行欺騙的做法是不安全的。筆者認為,追求高等級的 SafetyNet 不是最佳實踐,因為這意味着對專有的 DRM 與隱私侵入功能的支持。
媒體元數據,「打碼」
清除媒體元數據有助於減少在社交網絡中的暴露。
「打碼」可以遮擋部分敏感內容。請注意不要對文字「打碼」。這是不安全的做法,正確的做法是用純色、非透明的色塊填塗。
系統更新
在中國大陸,部分 Android 設備製造商甚至不願意為其產品提供一年的系統更新。儘管有着多方面的因素作用,筆者仍強烈建議選擇至少提供 3 年 Android 版本更新,且能跟進 Android 安全補丁的製造商。儘管在低 API 下大多數程序也可以正常運行,但考慮到 Android 的隱私、安全管理仍在不斷進步,跟進最新版本會帶來大量好處。
「安全管家」
「安全管家」無法真正帶來安全,這和殺毒軟件總殺不完毒的道理一致。窮舉黑名單是網絡安全中最不聰明的做法。
減少足跡
有一些觀點認為:「我已經暴露了很多隱私,再保護已經沒有用了」。這是錯誤的認識。既有的數據效力會逐漸下降,而如果心甘情願地持續提供數據,後果則會越來越嚴重。
如果有可能,應當避免使用所有不必要的互聯網服務。「註銷帳號」比「卸載軟件」更加徹底,也富有表達力。
致謝
本文的觀點部分參考了 privacyguides.org 的相關內容,筆者對其致力於撰寫隱私安全指南的行動表示認同,並感謝他們的付出。
This page is available under the CC BY-NC-SA 4.0 License.
Link to this article: https://www.misaka-mc.tokyo/2022/07/20/a-better-way-to-use-an-android-phone-2022/