據統計,每年至少新增 150 萬種移動惡意軟體,至少造成超過 1600 萬件的移動惡意軟體攻擊事件。
而 Android 因其開放性的生态環境,安全問題更是相當嚴峻。在應用市場上,很多 Android App 都存在潛在的安全風險,一旦被利用,會給使用者和開發者帶來很大影響。
同時,伴随《網絡安全法》以及《個人資訊保護法》等相關法律法規的出台和落地,移動應用開發者們也需要協同政府部門,共同營造安全的移動應用環境,促進網絡安全的規範化、安全化、健康化發展。
為幫助移動開發者有效應對應安全要求,mPaaS 内很多子產品都采用了安全政策:
- 移動應用安全加強
- 隐私合規檢測
- RPC 的加簽加密
- 離線包的簽名校驗
- 移動同步的tcp+ssl機制
- 熱修複的加密配置
……
本文将為大家介紹上述常見 mPaaS 關于安全設計的幾種子產品,便于後續更好的使用。
随着政策法規及監管标準不斷細化深化,監管查處力度的不斷加大,App 開發方需要面臨的政策風險也在逐漸增加。
mPaaS 隐私合規檢測服務,依據國家相關法律法規及行業規範,對移動 App 隐私安全、個人資料收集和使用進行合規分析。
從個人資訊收集、權限使用場景、隐私政策等多個次元幫助企業及 App 開發者識别安全風險,提供對應的專家整改建議,助力客戶規避監管處罰及通過稽核上架。
移動安全加強
結合着阿裡内部移動應用安全加強能力的更新,我們現已在 mPaaS 中對外輸出移動應用安全加強能力。
針對市面上移動應用普遍存在的破解、篡改、盜版、釣魚欺詐、記憶體調試、資料竊取等各類安全風險,mPaaS 移動安全加強為 App 提供穩定、簡單、有效的安全防護,提升 App 整體安全水準,力保 App 不被破解和攻擊。
在應對 Android 常見的攻擊手段,比如 反編譯、二次打包、動态調試等的同時,我們也注重性能和相容性。
- 加強能力經曆了淘寶、菜鳥等上億業務的實踐,在安全性上有保障;
- 在相容性上,我們支援 4.2 到 Android Q 的 版本;
- 能夠支援 arm、x86、x64 的系統架構,在複雜的環境下穩定運作,奔潰率低;
- 另外,通過對于類的混淆保護,增加攻擊者逆向 App 的難度,讓攻擊無從下手。
RPC
作為 mPaaS 最重要的元件之一,RPC 提供了用戶端和服務端的安全通信通道,其中涉及安全的主要包括加簽和加密。其中加簽解決的是防止用戶端被僞造,加密解決的是防止請求資料被洩漏。
1 加簽
整體流程:
- 在 mPaaS 背景初始化應用的時候,會為每一個 App 建立一個唯一的appSecret;
- 用戶端通過appid、WorkspaceID、appSecret等資訊,生成無線保镖圖檔。通過無線保镖子產品的加密,保證了存放在用戶端的 appSecret 的安全性;
- 用戶端請求的時候,從無線保镖擷取 appSecret,同時添加 OperationType、time、requestData 等因子做 MD5 計算,添加到 header 發到 MGS 網關;
- MGS 收到後按照同樣的方法再計算一次 MD5,如果一緻,則通過校驗。
優勢:通過無線保镖機制,保證了内置在用戶端内的 appSecret 的安全性。
2 加密
- 通過 openssl 生成非對稱秘鑰,用戶端儲存公鑰,服務端報錯私鑰;
- 用戶端每次請求 RPC 都會生成一個新的對稱秘鑰,通過第一步生成的非對稱秘鑰進行加密,生成 SecKey;
- 用戶端使用對稱密鑰同時對原始資料進行加密,得到加密的資料 SecData;
- 移動網關通過儲存的私鑰對 SecKey 進行解密得到對稱密鑰;
- 通過上一步得到的對稱秘鑰,對加密資料SecData進行解密,得到原始資料。
優勢:RPC 的加密采用了混合加密的模式,使用了非對稱加密和對稱加密的組合。如果單純使用對稱秘鑰,雖然性能較好,但是保證不了足夠的安全性。如果單獨使用非對稱加密,雖然保證了安全性,但是會導緻性能變差,不适合RPC這種大量通信的場景。
是以RPC采取的這種混合加密模式,很好的結合了兩者的優點。
3 防抓包
在用戶端端為了防止資料被抓包軟體抓到,用戶端進行了防止抓包的設定,通過設定網絡庫禁止代理的方式,解決了被抓包的風險。代碼如下:
離線包
作為業務使用很多的離線子產品,為了保證下發到本地的離線包子產品沒有被篡改,離線包提供了簽名校驗機制。
- 提前通過 openssl 生成公鑰和私鑰,公鑰内置在用戶端内,私鑰存儲到服務端;
- 離線包打包的時候,服務端對目前離線包的檔案做 MD5 計算,然後将計算後的值通過非對稱秘鑰進行加密生成加密後的簽名資料,随離線包下發到用戶端;
- 用戶端每次打開離線包的時候,通過用戶端内的公鑰擷取下發的 MD5 和本地的離線封包件做 MD5 對比,如果一緻,則校驗通過,如果不一緻,則删除離線包,直接通路 fallback 資源。
優勢:
- 由于是每次打開離線包都做校驗,保證了離線包的來源正确和不被篡改;
- 校驗失敗後直接降級到fallback位址,減少對客戶使用的影響
MDS 實時釋出
MDS 實時釋出服務提供了 apk 的釋出功能,同時為了保證下載下傳的 apk 檔案不被篡改,提供了基于 MD5 的完整性校驗。
在上傳 apk 的時候,會基于目前的 apk 生成 MD5 下發,本地安裝的時候本地下載下傳檔案的 MD5 和會和服務端下發的 MD5 做比對,如果比對成功才會繼續安裝。
服務端下發的 MD5 字段如下圖所示:
MSS 移動同步
移動同步服務 Sync 是基于 TCP 進行通信的,為了保證安全,Sync 可以配置為 TCP+SSL 模式進行通信。
當指定 Sync 的端口号為 433 端口後,用戶端就會開始基于 TCP+SSL 實作長連接配接,長連接配接請求到服務端後,需要通過 F5 或者其他類似負載裝置完成 SSL 解除安裝,最後到 MSS 實作長連接配接。
整體流程如下圖所示:
結語
随着移動應用的迅猛發展,使用者對于移動應用涉及到的隐私問題、安全問題日益關注。
移動應用涵蓋使用者大量個人資料,一旦發生洩漏可能對個人、社會造成重大影響,同時對移動應用産業長遠的發展來說也是毀滅性打擊。
移動應用開發者,也應注意開發過程中的規範性、安全性,敬畏安全問題,防範合規風險。
本文作者:阿裡雲 mPaaS TAM 團隊(榮陽)
END