孫金奇


摘要:移動手機的快速普及以及移動互連網絡的快速發展,給人們的生活工作帶來了極大的便利,人們可以使用移動手機終端的APP來實現上下班打卡、編輯工作文件、訪問公司內網、與朋友視頻通話等工作生活需求。但是,移動互聯網的信息安全問題也為我們的生活工作帶來了新的挑戰,手機端硬件加密系統應運而生。然而,不同的手機硬件加密系統硬件構造、硬件體系不同,并未形成統一的對外接口,導致手機應用APP必須使用不同的版本來適配不同的加密硬件。因此,本系統主要解決硬件系統的統一對外出口問題,在不修改應用APP的前提下統一調用不同的加密硬件,故此,安全APP是本系統的核心。
關鍵詞:Android;國密;加解密;簽名驗簽;終端可信硬件密碼模塊
中圖分類號:TP311.52 文獻標識碼:A 文章編號:1007-9416(2019)10-0187-03
0 引言
近年來隨著移動手機的應用與普及以及手機操作系統的進一步革新與完善,手機應用需求越來越多。例如:手機支付使我們再也不必帶錢包拿幾百塊錢現金甚至銀行卡去買東西,可以通過手機掃碼支付,直接打通用戶、商家與銀行的信息流。二十年前,我們去陌生城市旅游商務等需要買一張地圖,甚至到一個地方就需要向路人打聽如何去往自己的目的地,但是當前的手機導航讓我們無論身處何地,只要有網絡信號就可以快速獲取當前位置、如何去往目的地。可以說智能手機的發展改變了我們的生活,但是智能手機的快速發展也存在一定的問題,例如:假基站獲取我們的網絡信號來進行詐騙與傳銷;手機網絡病毒遠程植入獲取用戶通信錄、個人信息、支付信息等;網絡通信內容被人竊聽甚至網上售賣等。因此,亟需手機安全加密系統來保護個人信息不泄露。
當下手機端的加密有硬件加密和軟件加密之分,軟件加密是通過加密軟件來保護信息流入流出的安全可靠,但軟加密效率相對低下。硬件加密主要是通過手機內置加密芯片(如華為Mate系列手機的Inse加密模塊)、TF加密卡以及手機貼膜卡實現。這三種加密方式可以實現相同的業務功能,但是由于這三種加密方式的硬件基礎不同,應用程序如果想分別調用這三種方法只能編寫三個版本的軟件系統或編寫一個統一的調用接口來統一調用。顯然使用三個版本應用程序工作量巨大是不可取的,因此需要一款統一的加密硬件調用接口程序供應用程序調用,這也是本文的重點。
1 相關技術介紹
1.1 Android系統架構
Android系統是當下最流行的手機操作系統之一,是由谷歌公司開發一款基于Linux系統的開源操作系統。Android平臺的核心是Android系統,該平臺是由操作系統、中間件、應用程序以及用戶界面組成。其中,其核心軟件是基于Linux系統,使用C語言開發編寫;中間件使用C++語言編寫,為底層操作提供支持與保障;應用軟件是由各種應用公司開發研制,用于滿足用戶的各種功能需求。
Android系統采用與大部分操作系統類似的分層架構,如圖1所示分為四個層次,分別是:APPLICATIONS(應用層)、APPLICATION FRAMEWORK(應用框架層)、運行庫層以及LINUX KERNEL(Linux內核層)。應用層主要是面向用戶的可視化功能軟件,如:短信、日歷、天氣、微信、備忘錄等,所有面向應用層的軟件均由JAVA編寫。應用框架層為應用層的軟件提供運行框架,提供了豐富的UI接口,方便應用開發人員調用底層服務。運行庫層包含豐富的C/C++庫,通過應用框架層為開發者提供各種功能服務。Linux內核提供各種進程管理、內存分配、設備驅動管理、堆棧是文件系統管理等功能服務。
Android系統開發有活動(Activity)、服務(Service)、廣播接收器(BroadcastReciever)、內容提供商(Content Provider)四大組件。活動是所有應用程序的根本,所有程序都運行在活動中。應用程序每一個界面就是一個活動,其中有各種圖片、文字、按鈕等,類似于一個網頁。服務不提供頁面,可以與其它組件交互,在后臺運行。服務是一種程序,在不主動關閉的情況下它可以在后臺運行很長時間。廣播接收器廣泛應用于應用程序間的信息傳輸機制,應用程序可以使用其對外部事件進行有針對性的過濾。內容提供商實現多個應用程序之間數據的共享。
1.2 國密加密體系
國密算法是由國家密碼局指定的國產商用密碼算法,可實現商用加解密運算、簽名驗簽認證等功能服務,其主要算法有SM1、SM2、SM3、SM4。
SM1是商用密碼算法中的分組標準對稱算法,密鑰與分組長度均為128bit,該算法強度與軟硬件速率性能均與AES類似,該算法只是以IP核的形式存儲在安全芯片中,具體算法內容保密,不向外公開。SM2是一款國密局發布的橢圓曲線公鑰密碼算法,其相對于國際上的RSA更加安全可靠。橢圓曲線是由維爾斯特拉斯方程確定的平面曲線,橢圓曲線是基于離散對數問題問題實現的加密方式,至今暫無有效的方法解決這一問題。橢圓曲線算法相對于RSA有如下優勢:(1)計算量小,處理速度快,相對于RSA可以快速實現簽名驗簽和加解密;(2)帶寬需求低;(3)安全性高,160位的橢圓曲線密碼強度與1024位的RSA強度相當;(4)存儲量小,SM2的存儲空間是192-256bit,RSA的存儲空間為2048-4096bit;(5)計算復雜度高,SM2的計算復雜度是完全指數級別,而RSA的計算復雜度為亞指數級別。SM3是我國采用的一種散列函數密碼標準(GM/T0004-2012《SM3密碼雜湊算法》)。在我國商用密碼中,其主要應用于簽名驗簽、消息認證碼生成驗證、隨機數生成等,其生成效率與SHA-256相當。SM4是國家秘密局采用的分組密碼標準(GM/T0002-2012《SM4分組密碼算法》),SM4主要用于數據的加密與解密,其分組長度與密鑰的長度都是128比特,加密與密鑰擴展算法均采用32為非線性迭代結構,S盒子是固定的8bit輸入輸出。
2 系統架構設計
手機移動應用加解密與簽名驗簽系統采用的是前后端分離的設計結構。前后端分離設計,是一種前端代碼與后端代碼的分離,也是前端內部邏輯與后端內部邏輯的分離(前后端系統可以獨立地完成其內部子功能邏輯),更是前后端物理部署的分離。前后端分離使業務邏輯更加清晰,減少了前后端功能的耦合,某個子功能的錯誤不會迭代影響其他子功能的錯誤,更重要的是前端錯誤不會影響后端服務器錯誤,后端服務器功能增減與更新迭代不會影響手機前端功能。終端包括智能手機等在內的移動終端,其硬件部分由可信終端硬件和可信的硬件密碼模塊等組成;軟件部分由移動操作系統、業務APP和安全APP組成,如圖2所示。其中業務APP是需要加密的手機端普通APP程序,安全APP是手機端APP與終端可信硬件密碼模塊之間的統一接口(直接調用手機內置安全加密芯片(Inse)、手機貼膜卡加密芯片、TF加密卡芯片)[1]。
3 系統實現
本系統采用前后端分離的架構邏輯,前端手機安全APP模塊,后端簽名服務器、功能調用接口、終端可信硬件密碼模塊,相互邏輯解耦合,獨立開發、獨立部署。手機端服務的業務功能邏輯拆分提高了系統開發安全、降低了系統冗余。同時,由于功能模塊相互低耦合度,提高了系統的魯棒性,降低了開發難度[2,3]。
3.1 后端服務器
后端服務器主要實現對手機前端應用APP發來的簽名包進行驗簽,驗簽成功后獲取SM2(國密)國密加密公鑰值。然后,通過簽名響應的形式將本地生成的SM4(國密)通信密鑰以獲取的SM2(國密)公鑰加密的形式進行傳輸,進而實現會話密鑰的交換。后端服務器同時還進行時間戳辨認、IMSI號審核、包名審計等,以確定申請人信息無誤,防止重放攻擊等惡意代碼入侵,并以日志的形式記錄每一條簽名信息與加密信息。
3.2 手機端安全APP模塊
手機端安全APP模塊主要實現對終端可信硬件密碼模塊的選擇,以確保應用APP使用最優的加密方式。由于手機端加密方式多樣,為保證應用開發的統一,必須使用統一的信息對外出口。因此,安全APP模塊是本系統的核心,是終端可信硬件密碼模塊與手機應用APP之間的橋梁。手機應用APP不需要知道調用的是何種加密模塊,只需要調用統一接口,就可以實現應用的簽名/驗簽和加/解密功能,在軟件上實現了加密模塊選擇調用的透明化!
安全APP模塊會按照加密速度優先級以優先調用手機內置安全加密芯片(Inse),如果無此安全APP的情況下,調用手機貼膜卡加密模塊,最后調用TF加密卡模塊。如果這幾個安全加密模塊都不存在,則返回硬件未找到,否則,調用優先級最高的加密模塊實現國密簽名/驗簽和加/解密操作。安全APP在啟動時首先會初始化手機的硬件資源,如手機的IMEI號,應用APP包名、終端可信硬件密碼模塊的配置情況等。安全APP一旦獲取了終端可信硬件密碼模塊的信息,將主動選擇該密碼模塊(如有多種密碼模塊則選擇最優模塊)。當應用APP發來簽名請求時,安全APP將整合已有信息調用簽名接口獲取帶有簽名公鑰簽名信息。然后,當應用APP獲取服務端發來的響應信息時,安全APP使用驗簽接口,調用終端可信硬件密碼模塊驗簽信息,并使用SM2解密密鑰獲取SM4會話密鑰。最后,應用APP即可與服務器使用SM4會話密鑰進行會話操作。其中會話密鑰以鍵值對的形式與應用APP的包名存儲在安全APP中,以區分不同應用APP的會話密鑰。
3.3 手機端功能接口
(1)簽名接口。簽名接口主要是在手機端安全APP初始化選定終端可信硬件密碼模塊后,與終端可信硬件密碼模塊通信的接口,通過簽名接口安全APP可以獲取加密模塊的SM2(國密非對稱加密算法)簽名公鑰以及使用SM2(國密國密非對稱加密算法)私鑰簽名的SM2(國密非對稱加密算法)加密公鑰簽名信息值,通過bate64轉化后發送給應用APP。(2)驗簽接口。驗簽接口主要實現在后臺服務器驗簽應用APP發送的簽名數據成功后,發送響應數據。其數據也是一串簽名數據,其中包含SM2(國密國密非對稱加密算法)簽名公鑰、使用SM2(國密國密非對稱加密算法)公鑰加密后的SM4(國密對稱加密算法)會話密鑰值等。通過驗簽接口,可以驗簽后臺服務端發來數據的合法性,同時通過安全APP解密獲取會話密鑰值。(3)加密接口/解密接口。通過驗簽接口獲取的存儲在安全APP中的會話密鑰,應用APP可以實時與后臺服務器進行SM4(國密對稱加密算法)加密的會話通信。(4)公鑰導出接口。由于簽名驗簽時需要驗簽方獲取簽名方的公鑰信息,因此需要通過公鑰導出接口調用安全APP獲取加密模塊的簽名驗簽公鑰字符串。
4 結語
本文主要介紹了基于安卓系統的國密硬件加密系統的設計與實現,所設計的移動應用加密系統可以實現在線硬件加密模塊的調度,包括加密模塊發現、模塊選擇以及硬件功能調用等。用戶在不需要關心硬件加密模塊的前提下,快速實現加解密與簽名驗簽操作,在軟件層實現對用戶的透明不可見,用戶不需要關心自己調用的是何種硬件加密方式,極大地提高了用戶調用效率,減少了下游用戶的開發難度,提高了開發效率。
參考文獻
[1] 熱夏提·艾爾肯.基于透明加密的Android平臺加密系統的設計與實現[D].中國科學院大學(中國科學院工程管理與信息技術學院),2017.
[2] 李濟洋,趙鵬遠,劉喆.基于加密SD卡的內網移動終端可信接入方案[J].網絡與信息安全學報,2019,5(04):108-118.
[3] 王志賀,駱釗,謝吉華,顧偉,陳海超,許超,周亮.基于SM2密碼體系的SD卡的電力移動終端安全接入方案[J].中國電力,2015,48(05):75-80.