王 蕓 趙長江
安全的移動終端數(shù)字簽名方案
王 蕓 趙長江
為了確保移動終端的信息安全,提出一種移動終端上的應用對電子公文進行數(shù)字簽名的方法,用戶簽名私鑰托管在簽名服務器,由簽名服務器保證用戶簽名私鑰的安全,用戶數(shù)字簽名時把簽名內(nèi)容的HASH值發(fā)送到簽名服務器,服務器完成簽名后把簽名返回終端,有效地解決了移動終端在簽名密鑰不能保證安全的情況下,實現(xiàn)了安全數(shù)字簽名。
智能移動終端是一種多功能設備,具有“小巧輕便”及“通訊便捷”的特點,不僅具有通訊功能,而且在安裝應用程序后能夠進行電子商務,移動辦公等業(yè)務。小巧輕便的特點使得移動設備一般不去執(zhí)行大量的復雜運算,設備外設接口簡單,一般是通過無線方式與其他設備進行交互。隨著智能移動終端越來越多的參與各項網(wǎng)絡應用,針對移動應用的安全攻擊越來越多,許多惡意應用能夠竊取用戶存儲在終端上的私有數(shù)據(jù),攻擊終端與服務器的通信。
在自動化辦公中,如何保證電子公文的真實性、完整性、可靠性和不可抵賴性是系統(tǒng)亟待解決的問題。為了解決上述問題,傳統(tǒng)上采用基于數(shù)字證書的公鑰密碼(Public Key Infrastructure,簡稱 PKI) 系統(tǒng)通過數(shù)字簽名技術(shù)來保障電子文檔的內(nèi)容安全。在使用數(shù)字簽名時需要用到私鑰,為了保證私鑰的安全,一般采用 USB 密碼鑰匙( USB key)作為客戶端裝置來存儲用戶私鑰,對電子文檔進行數(shù)字簽名。
在實際應用中,使用USB 密碼鑰匙需要主機擁有USB 接口,這阻礙了USB 密碼鑰匙在移動終端設備上的廣泛應用。 雖然目前出現(xiàn)了帶有藍牙接口或者音頻接口的USB 密碼鑰匙, 但上述設備仍存在如下缺點 :由于藍牙協(xié)議的開放性,無法保證藍牙 USB 密碼鑰匙設備與主機通訊的安全性;帶音頻接口的 USB 密碼鑰匙設備,無法解決不同移動終端之間音頻接口的兼容性問題。
本文提供一種移動終端上的應用對電子公文進行數(shù)字簽名的方法,用戶簽名私鑰托管在簽名服務器,由簽名服務器保證用戶簽名私鑰的安全,用戶數(shù)字簽名時把簽名內(nèi)容的HASH值發(fā)送到簽名服務器,簽名服務器完成數(shù)字簽名后把簽名返回給用戶,從而實現(xiàn)數(shù)字簽名。
本文設計的系統(tǒng)由移動終端,簽名服務器和KMC服務器密碼機組成。系統(tǒng)中用戶,簽名服務器和KMC服務器密碼機擁有CA頒發(fā)的證書和私鑰,簽名服務器負責管理用戶的簽名私鑰,系統(tǒng)所有的密鑰保存在KMC服務器密碼機中,密碼機只能和簽名服務器進行通信。用戶可以從網(wǎng)絡上下載證書和查詢證書狀態(tài),用戶移動終端軟件提供人機接口,接收用戶輸入的信息,終端應用需要進行數(shù)字簽名時,把待簽名信息的Hash值和用戶的身份信息封裝在一起構(gòu)成數(shù)字簽名請求消息,通過短信或者網(wǎng)絡通信發(fā)送到簽名服務器,服務器對用戶請求進行驗證,驗證通過后調(diào)用KMC服務器密碼機,使用用戶私鑰進行數(shù)字簽名,然后把簽名結(jié)果返回給用戶,完成數(shù)字簽名過程。
圖1 移動終端安全簽名系統(tǒng)結(jié)構(gòu)圖
系統(tǒng)注冊流程
用戶在使用移動終端數(shù)字簽名系統(tǒng)前需要在簽名服務器注冊該移動終端,確保只有合法的用戶才能使用已注冊終端進行數(shù)字簽名請求,注冊流程描述如下。
1.用戶首先在智能移動終端安裝應用軟件,應用軟件啟動后,檢查是否有簽名服務器的證書,KMC服務器密碼機和用戶的證書,如果沒有證書則自動從預置網(wǎng)站下載證書。
2.注冊請求:用戶輸入用戶名UserId,私鑰加密密鑰Kp,用戶手機號碼,選擇用戶證書,然后向簽名服務器請求手機驗證碼;
3.簽名服務器接收到用戶的手機驗證碼請求后,根據(jù)用戶輸入的用戶名UserId,手機號碼與已登記信息比對,如果用戶名已存在,說明用戶已經(jīng)注冊過,這時手機號必須為該用戶已注冊過的手機號碼,如果用戶名不存在,說明是新注冊用戶,手機號必須為新的號碼。
4.簽名服務器確認成功后發(fā)送短信驗證碼到用戶手機,并保存驗證碼。
5.用戶接收到短信驗證碼后輸入該短信驗證碼到指定位置,移動終端使用KMC服務器密碼機的公鑰加密用戶證書ID號,私鑰加密密鑰,當前時間T,表示如下:
EncKMC=PubKmc(用戶證書ID Uc,私鑰加密密鑰Kp,時間T)。
6.系統(tǒng)發(fā)送注冊請求到服務器,內(nèi)容包括:用戶名,手機號碼,移動終端IMEI號,短信驗證碼,EncKMC,以上內(nèi)容使用服務器證書生成數(shù)字信封進行保護:
隨機生成密鑰K,利用K使用對稱加密算法(比如AES)對注冊請求進行加密,表示如下:
EncK(用戶名UserId,手機號,終端IMEI號,HASH(用戶名UserId,手機號,終端IMEI號,短信驗證碼,PubKmc(用戶證書序列號Uc,私鑰加密密鑰Kp,時間T))。
然后利用服務器證書里面的公鑰PubServ對密鑰K進行加密,表示如下:
PubServ(K)。
以上密碼結(jié)果使用符合PKCS語法的數(shù)字信封格式進行封裝。
7. 服務器接收注冊請求,首先利用私鑰解密數(shù)字信封,驗證短信驗證碼是否正確,如果不一樣說明用戶信息有誤,返回出錯結(jié)果。8. 驗證通過后,簽名服務器把PubKmc(用戶證書序列號Uc,私鑰加密密鑰Kp,時間T)提交到KMC服務器密碼機。
9. KMC服務器密碼機接收服務器提交的信息,使用它的私鑰進行解密,獲得用戶證書序列號Uc,私鑰加密密鑰Kp,時間T,首先檢查檢查當前時間與時間T的差別,如果超出允許范圍,則拒絕接受,返回錯誤。然后根據(jù)用戶證書序列號獲取用戶證書和加密保存的用戶私鑰,利用Kp解密用戶私鑰,與用戶證書進行匹配驗證,如果匹配成功則表明用戶擁有正確的加密密鑰,證明用戶的身份是真實的,返回成功消息,否則返回失敗消息。
10.根據(jù)KMC服務器密碼機返回的信息,如果成功則返回成功消息,使用密鑰K進行加密:
ENCK(UserId,成功信息,Hash(成功信息,短信驗證碼))
否則返回失敗消息。同時簽名服務器存儲用戶名UserId,手機號,終端IMEI,短信驗證碼,用于后面的驗證。
11. 用戶接收服務器返回的消息,使用密鑰K解密數(shù)據(jù),驗證Hash值,判斷注冊是否成功。若成功,終端計算HA1=HASH(手機號,短信驗證碼)作為終端通行證碼保存到移動終端,無需保存手機號,加密密鑰和短信驗證碼等敏感信息。
只有注冊過的終端才能連接到服務器進行數(shù)據(jù)通信,同一個用戶可以注冊多個終端,需要保證用戶名和密碼一致。
數(shù)字簽名流程
用戶需要數(shù)字簽名時,可以通過短信或者網(wǎng)絡與簽名服務器通信,申請數(shù)字簽名,流程如圖2所示, 具體流程如下。
移動終端首先獲取保存在本地的HA1,獲取終端的IMEI號碼, 計算出待簽名電子文檔M的Hash值,然后提示用戶輸入私鑰加密密鑰Kp,簽名請求消息使用KMC服務器密碼機的公鑰生成數(shù)字信封進行保護。表示如下:
PEncKmc=(PubKmc(K), EncK(Hash(M), 用戶證書序列號Uc,Kp,T)),數(shù)字信封技術(shù)可確保用戶的私鑰加密密鑰的安全。
圖2 數(shù)字簽名申請流程
最終的數(shù)字簽名申請消息為:
SessionId,UserId,IMEI,PEncKmc, Hash(上述消息,HA1)
其中SessionId為會話ID, UserId為注冊時的用戶名。把簽名申請消息發(fā)送到簽名服務器。
簽名服務器接收用戶的請求,首先根據(jù)UserId,IMEI獲取用戶的信息包括手機號碼,短信驗證碼等,計算HA11=HASH(手機號,短信驗證碼),計算Hash (SessionId,UserId,IMEI,PubKmc,HA11) 與用戶發(fā)送過來的數(shù)據(jù)進行比較,如果一致證明用戶終端是已注冊過的可信終端。
然后簽名服務器轉(zhuǎn)發(fā)PEncKmc =(PubKmc(K),EncK(Hash(M), 用戶證書序列號Uc,Kp,T)) 到KMC服務器密碼機。
KMC服務器密碼機利用它的私鑰解密數(shù)字信封,得到Hash(M), 用戶證書序列號Uc,Kp,時間T。首先檢查檢查當前時間與時間T的差別,如果超出允許范圍,則拒絕接受,返回錯誤。然后根據(jù)用戶證書序列號獲取加密保存的用戶私鑰,利用Kp解密用戶私鑰,利用用戶的私鑰加密Hash(M),作為M的數(shù)字簽名返回用戶,否則返回失敗消息。返回的消息如下:
SessionId,UserId,Sigpri(Hash(M))
用戶接收服務器的消息,判斷是否請求成功,如果成功則利用用戶的證書驗證數(shù)字簽名是否正確,如果正確則表示本次數(shù)字簽名申請成功,把Sigpri(Hash(M))提交給應用軟件,否則報告用戶出錯信息。
利用密碼技術(shù),數(shù)字證書和短信相結(jié)合實現(xiàn)了移動終端上的一種安全的數(shù)字簽名方法,用戶的簽名私鑰加密后托管在服務器密碼機里面,只有用戶才能調(diào)用該私鑰進行加密運算,在移動終端上只需執(zhí)行少量運算,適用于各類移動終端。同時基于移動終端的私有屬性和安全的認證協(xié)議提供了一種安全便捷的認證技術(shù),使用戶可以從遠程通過移動終端請求數(shù)字簽名,操作過程安全便捷。
3.安全性分析
用戶私鑰加密后托管在KMC服務器密碼機內(nèi),只有用戶知道加密密鑰,數(shù)字簽名運算在KMC服務器密碼機內(nèi)進行,服務器密碼機確保私鑰不能被導出,保證了私鑰的安全。
用戶請求數(shù)字簽名只能通過已注冊的終端進行,基于移動終端的私有屬性,利用密碼技術(shù)把用戶的手機號碼,移動終端IMEI號,短信驗證碼,密碼進行綁定,實現(xiàn)對移動終端應用的身份認證,用戶不僅要提供正確的登錄口令,同時所用設備也必須是在系統(tǒng)注冊過的,這種綁定可以確保即使用戶登錄密碼或設備丟失,只要不是二者同時被竊,都可以保證用戶端的安全。
數(shù)字簽名申請消息使用KMC服務器密碼機的公鑰進行保護,確保消息只有KMC服務器密碼機才能解密,保證了申請消息的安全。
移動終端開展電子政務應用需要提供數(shù)字簽名服務,但是目前的移動終端缺乏提供存儲數(shù)字簽名私鑰的安全條件,私鑰存放在移動終端有可能被黑客竊取。本文設計了一種智能移動終端實現(xiàn)數(shù)字簽名的方法,簽名服務器負責托管用戶的簽名私鑰,系統(tǒng)所有密鑰加密后保存在KMC服務器密碼機中,用戶私鑰的加密密鑰由用戶自己掌握,密碼機只能和簽名服務器進行通信。用戶可以從網(wǎng)絡上下載證書和查詢證書狀態(tài),用戶移動終端軟件提供人機接口,接收用戶輸入的信息,終端應用需要進行數(shù)字簽名時,把待簽名信息的Hash值和用戶的身份信息封裝在一起構(gòu)成數(shù)字簽名請求消息,通過短信或者網(wǎng)絡通信發(fā)送到簽名服務器,服務器對用戶請求進行驗證,驗證通過后調(diào)用KMC服務器密碼機,使用用戶私鑰進行數(shù)字簽名,然后把簽名結(jié)果返回給用戶,完成數(shù)字簽名過程。用戶請求數(shù)字簽名時,只需要發(fā)送待簽名文檔的Hash值和用戶的身份認證信息就可以,對移動終端性能要求少,解決方案適應性好。
王 蕓1趙長江2
1.中國聯(lián)通青島分公司2.青島微智慧信息技術(shù)有限公司
王蕓,1975年出生,女,1997年畢業(yè)于山東工業(yè)大學,研究方向為計算機通信,從事交換與傳輸工作。
10.3969/j.issn.1001-8972.2015.07.001