鴻蒙Next安全之應用加密:保障應用程式碼安全

SameX發表於2024-11-06

本文旨在深入探討華為鴻蒙HarmonyOS Next系統(截止目前 API12)在開發多語言電商平臺方面的技術細節,基於實際開發實踐進行總結。主要作為技術分享與交流載體,難免錯漏,歡迎各位同仁提出寶貴意見和問題,以便共同進步。本文為原創內容,任何形式的轉載必須註明出處及原作者。

在數字化浪潮中,移動應用的安全性愈發受到重視。鴻蒙 Next 系統憑藉其強大的應用加密功能,為開發者提供了全方位的程式碼安全保護。今天,我們將深入探討鴻蒙 Next 的應用加密機制,包括其能力簡介、加密影響、加密效果以及使用步驟,幫助開發者更好地理解和應用這一重要特性。

一、能力簡介

(一)端到端加密機制

鴻蒙 Next 的應用加密提供了端到端的安全保障,從開發者上傳應用包到應用在使用者裝置上的執行,每一個環節都進行了加密處理。開發者嚮應用市場提交上架申請時,可選擇對應用包進行加密。一旦選擇加密,應用市場在稽核透過後會對上架應用執行程式碼加密操作。此時,應用在裝置上安裝時,安裝檔案落盤後依然處於加密狀態,有效防止了應用程式被非法獲取和篡改。當應用程式啟動時,透過核心載入的應用檔案是加密狀態,這些檔案會在核心中按需解密執行,解密後的明文僅存在於記憶體中,不會儲存到裝置,從而形成了一個完整的端到端加密方案。這種加密方式確保了即使應用安裝包在傳輸或儲存過程中被竊取,攻擊者也無法獲取到應用的原始碼,大大提高了應用的安全性。

(二)系統級應用加密的優點

  1. 應用端到端加密,按需解密執行
    系統級的端到端加密保證了應用在整個生命週期中的安全性。應用在啟動過程中,只有在核心執行到相關程式碼時才進行解密操作,減少了明文程式碼暴露的風險。例如,一個金融類應用在執行過程中,涉及使用者資金交易的程式碼只有在實際執行交易操作時才會被解密,其他時間均以密文形式儲存,有效防止了攻擊者在應用未執行關鍵程式碼時獲取敏感資訊。
  2. 系統級的解密最佳化,效能影響小
    相較於傳統的加殼等加固方式,鴻蒙 Next 的系統級應用加密對效能的影響更小。這是因為系統在設計時充分考慮了加密和解密過程對效能的影響,並進行了最佳化。在實際應用中,經過加密的應用在啟動速度和執行效率方面與未加密應用相比,差異不大,不會給使用者帶來明顯的卡頓感,保證了使用者體驗的流暢性。
  3. 解密金鑰安全儲存
    解密金鑰經過安全傳輸後儲存在系統 TEE(可信執行環境)環境中,TEE 提供了一個獨立於普通作業系統的安全執行環境,具有更高的安全性。即使裝置被攻破,攻擊者也很難獲取到儲存在 TEE 中的解密金鑰,進一步保障了應用程式碼的安全性。

二、加密影響

(一)對效能的影響

加密後的應用在程式啟動和執行過程中可能會小幅度增加效能開銷。這主要是由於在應用啟動時需要進行解密操作,以及在執行過程中可能涉及到的資料加密和解密處理。然而,透過系統的最佳化,這種效能開銷被控制在較小範圍內,通常不會對使用者體驗造成明顯影響。例如,在一些效能測試中,加密後的應用啟動時間可能會增加幾十毫秒,但在使用者可接受的範圍內。而且,隨著硬體效能的不斷提升,這種效能影響將逐漸變得微不足道。

(二)對體積的影響

加密後的應用相比於不加密的應用體積更大,這是因為加密過程會增加額外的加密資料和相關資訊。較大的應用體積可能會導致下載和安裝時間稍有增加。不過,在現代網路環境下,網路速度不斷提高,這種增加的時間通常也不會給使用者帶來過多困擾。同時,開發者可以在應用開發過程中合理最佳化應用資源,儘量減少不必要的檔案和資料,以降低加密對體積的影響。

三、加密效果

(一)加密物件及安全性

加密物件主要為應用內編譯後的程式碼檔案,覆蓋.abc 檔案(除檔案頭外全部進行加密)。這種加密方式使得加密前的程式碼檔案可被反編譯,而加密後的程式碼檔案無法被分析,有效保障了應用程式碼防逆向分析、防破解。例如,攻擊者試圖對加密後的應用進行反編譯時,由於程式碼檔案已被加密,他們將無法獲取到有意義的原始碼資訊,從而無法進行惡意篡改或竊取應用邏輯。目前,.so 檔案預設不進行加密,但後續可能會根據開發者需求支援按照配置進行加密,進一步增強應用的整體安全性。

(二)加密金鑰安全性

由於應用加密使用的金鑰完全不會在應用包中出現,即使加密後的應用應用包被獲取,攻擊者僅能獲取到程式碼的密文,仍然相當於要破解 AES 密碼演算法才能進行逆向分析。AES 是一種廣泛應用且安全性較高的加密演算法,其破解難度極大,這為應用程式碼提供了堅實的安全保障。

四、使用步驟

(一)開發階段

在開發階段,開發者無需進行額外的加密操作,專注於應用功能的開發即可。此時,應用程式碼以明文形式進行編寫和除錯,方便開發者進行開發工作。

(二)上架階段

  1. 選取待發布的軟體包並上傳
    開發者完成應用開發後,選取待發布的軟體包並上傳到應用市場。在上傳過程中,可選擇設定分發的軟體包是否加密。
  2. 選擇加密選項
    如果開發者選擇加密,應用市場在稽核透過後會對應用進行加密處理。這一過程對開發者透明,開發者只需關注加密選項的選擇,確保應用在分發前得到有效的安全保護。

(三)分發階段

應用將被應用市場加密分發,確保應用安裝包在傳輸過程中以密文形式存在,防止安裝包被獲取後逆向分析。應用市場在分發加密後的應用時,會採用安全的傳輸協議,保障應用包的完整性和保密性。

(四)安裝階段

  1. 金鑰協商與儲存
    應用在裝置上安裝時,解密金鑰經端雲安全協商後在 TEE 環境內安全儲存。這一過程確保了金鑰的安全性,為後續應用執行時的解密操作提供了關鍵支援。
  2. 安裝檔案加密儲存
    安裝檔案落盤後保持加密狀態,防止裝置本地儲存的應用檔案被非法訪問和篡改。

(五)執行階段

核心載入應用時,按需解密。只有在應用執行到特定程式碼時,核心才會對相應的加密程式碼進行解密操作,保證了應用在執行過程中的安全性和效能平衡。例如,當應用啟動並進入登入介面時,與登入相關的程式碼會被解密執行,而其他未使用的程式碼部分仍保持加密狀態。

鴻蒙 Next 的應用加密功能為應用程式碼安全提供了全面而強大的保護。儘管在效能和體積方面存在一定影響,但透過系統最佳化和合理的開發策略,這些影響可以得到有效控制。我們需要充分利用這一特性,為使用者提供更加安全可靠的應用。希望本文能夠幫助各位深入理解鴻蒙 Next 應用加密機制,在應用開發過程中更好地保障應用安全。

相關文章