SM9 密碼算法屬于基于標識的密碼(Identity Based Crytograph,IBC)體系,它利用用戶終端的標識替代或將其演化為公鑰,無須公鑰證書授權(Certificate Authority,CA),降低了密鑰資源管理和部署難度,適用于有較高安全需求的物聯網應用場景。但用戶私鑰分發需將用戶終端集中于密鑰管理系統并以離線方式寫入用戶終端的密碼載體,不能通過網絡在線方式寫入,因此存在工作量大、管理效率低的不足。基于 SM9 密鑰管理技術體制,通過相關安全性設計,提出了一種用戶私鑰在線分發方法,可有效推進 SM9 在物聯網領域的應用。

內容目錄:

1 SM9 密鑰管理系統簡介

1.1 密鑰管理系統組成及架構

1.2 用戶密鑰產生和分發機制分析

2 用戶私鑰在線分發方案

2.1 用戶終端認證及注冊

2.1.1 實施方案

2.1.2 流程設計

2.2 用戶私鑰在線分發

2.2.1 實施方案

2.2.2 流程設計

3 可行性分析

3.1 安全性分析

3.1.1 防護體系方面

3.1.2 密鑰分發協議方面

3.2 實用性分析

3.2.1 密碼應用部署方面

3.2.2 對應用系統的影響方面

物聯網應用包括感知層、傳輸層和應用層 。在安全性要求較高的特種領域,需要采取認證加密手段處理感知層的用戶終端采集和傳輸的信息,確保應用信息的安全。而分布在感知層的用戶終端具有分布廣、數量大、終端設備輕量化等特點,傳統公鑰基礎設施(Public Key Infrastructure,PKI)的證書管理比較復雜,很難滿足擁有海量連接的物聯網應用的要求。

Shamir 在 1984 年提出了基于標識的密碼系統(Identity Base Cryptography,IBC)概念,在 IBC 中用戶身份與其公鑰以最自然的方式進行綁定,用戶身份信息作為公鑰,用戶私鑰則由密鑰生成中心(Key Generation Center,KGC)通過主密鑰和用戶標識計算得出。IBC 使得任意兩個用戶可以直接通信,不需要交換公鑰證書,不必保存公鑰證書列表和使用在線的第三方證書簽發機構證書授權(Certificate Authority,CA), 大 大 簡 化 了 公 鑰分發過程和證書管理過程。因此,IBC 可以作為PKI 的一個很好的替代,尤其是在具有海量連接的物聯網應用環境。

SM9 密碼算法作為身份標識密碼算法 的一種,遵循 IBC 密碼體制,用于解決物聯網用戶終端數據的安全防護問題,得到了業界的廣泛關注。在 SM9 技術體系中,規定戶的私鑰不能在終端自身的密碼設備中產生,而是由密鑰管理基礎設施(Key Management System,KMS)統一產生并下載給用戶,因此推廣 SM9 應用的關鍵在于解決好用戶私鑰分發的問題。

我國密碼行業標準 GM/T 0086—2020《基于 SM9 標識密碼算法的密鑰管理系統技術規范》提出了一種用戶私鑰離線分發方案,該方案安全性高,但需要耗費大量人力和時間開銷,對密鑰管理系統會造成較大壓力和負擔。業界也對SM9 用戶私鑰在線分發技術進行了相關研究 ,提出了一些相關用戶密鑰在線分發方案,但存在用戶身份被假冒以及數據傳輸保護不完善等問題。

本文基于 SM9 密鑰管理技術體制,提出了一種新的用戶私鑰分發機制,通過建立安全傳輸通道實現了用戶私鑰在線產生和分發,可以顯著提升 SM9 密鑰管理的能力和效率,從而有效推進 SM9 在物聯網領域的應用。

01SM9 密鑰管理系統簡介

1.1 密鑰管理系統組成及架構

SM9 的 KMS 由 私 鑰 生 成 系 統(Private Key Generator,PKG)、 注 冊 服 務 機 構(Registration Agency,RA)、公開參數服務器(Public Parameter Server,PPS)和用戶終端實體(User/Client)組成,系統架構如圖 1 所示。各實體功能如下文所述。

圖 1 SM9 密鑰管理系統組成及架構

(1)PKG 利用系統主密鑰和相關參數為用戶生成私鑰,并提供相關管理及查詢服務。

(2)RA 承擔用戶密鑰申請注冊、認證、管理以及與 PKG 進行業務交流的任務,提供對稱、非對稱及雜湊等密碼服務,并接收 PKG 返回的密鑰數據寫入終端實體的密鑰載體中。

(3)PPS 面向用戶信息服務系統,提供公開的可訪問地址,進行公開參數和策略的安全查詢與分發。公開參數包括可公開共享的密碼參數和用戶標識狀態目錄。

(4)User/Client 是用戶信息服務系統的終端應用系統,直接或通過本地代理向 PKG 申請密鑰,并實現對自身私鑰的存儲和使用。

從 SM9 密鑰管理系統架構分析可知,用戶密鑰的產生和分發主要涉及 PKG、RA 和 User/Client等 實 體, 可 通 過 在 PKG 與 RA 之 間、RA 與 User/Client 之間建立安全通道,實現密鑰的傳輸和下載。

1.2 用戶密鑰產生和分發機制分析

SM9 密碼系統的用戶密鑰包括用戶公鑰和私鑰,用戶公鑰為公開信息,可根據用戶身份標識產生,無須專門管理和分發;用戶私鑰為秘密信息,由 PKG 統一生成后,通過安全渠道傳遞給 User/Client。因此,SM9 用戶私鑰能否安全、快捷地傳遞給 User/Client 直接關系到 SM9 密碼應用能否推廣。SM9 的用戶私鑰離線分發方法包括以下關鍵步驟:

(1)用戶注冊:用戶通過 RA 完成注冊,用于密鑰申請時對用戶信息的驗證。

(2)密鑰申請:用戶向 RA 發送私鑰分發請求,RA 先對申請信息進行認證,審核用戶標識的唯一性以及用戶數據的真實性和完整性,如審核通過,RA 依據用戶申請內容,向 PKG 發送密鑰申請。

(3)密鑰產生:PKG 驗證 RA 的申請,利用系統參數生成用戶私鑰,并將用戶標識狀態信息發布到 PPS。

(4)密鑰分發:PKG 將用戶私鑰密文和相關信息組成相應數據包,并進行數字簽名,回送給RA,RA 驗證收到的數據,驗證通過后,把私鑰密文數據下載到用戶密鑰載體中。

從上述流程可看出,在離線方式下用戶私鑰通過 RA 直接下載寫入 User/Client(密鑰載體)。對于海量終端接入的物聯網應用部署,如果需要集中User/Client 并送到 RA 完成私鑰的下載寫入工作,必然耗費大量時間及成本,導致密鑰管理效率不高,不利于應用系統的密碼應用部署。此外,該種用戶私鑰分發方式不利于用戶密鑰后續的更換工作。因此,需要設計一種用戶私鑰的在線分發機制,以適應具有海量終端接入的物聯網應用系統的要求。

02用戶私鑰在線分發方案

用戶私鑰在線分發是基于 User/Client 與 KMS之間互聯互通的情況下,實時在線地從 KMS 下載用戶私鑰到 User/Client。而信息在交互過程中,面臨著身份假冒、信息被竊聽、信息被篡改和重放等安全威脅。因此,從 User/Client 與 KMS 之間的信息交互的安全性出發,基于 SM9 KMS 架構提出一種新型的用戶私鑰分發方案。本方案設計要點如下:

(1)User/Client 標識設計。User/Client 采用兩個用戶標識:一個為公開標識(UID),可以公開,用于生成用戶公鑰;另一個為私有標識(SID),不對外公開,保存在用戶終端的密鑰載體中,第三方不能對 SID 進行讀寫,用于身份識別。UID 和SID 均由 PKG 統一產生,具有唯一性的特點,設備出廠前由生產廠家寫入,二者形成一一對應關系,并保存在 PKG 中。由于 UID 和 SID 兩個用戶標識的功能相互獨立,不會在 SM9 密碼管理體系架構中造成任何沖突。

(2)密鑰分發流程設計。與密鑰離線分發流程相比較,增加 User/Client 與 KMS 的雙向認證過程,保證 User/Client 身份的合法性,同時保證 User/Client 不會被假冒的 KMS 欺騙。在身份認證通過后,再完成用戶信息的注冊,最后進行密鑰產生及下發。

(3)信息傳輸安全防護設計。通過身份認證進行密鑰協商,產生數據傳輸加密密鑰和完整性檢驗密鑰,實現 User/Client 與 RA、PKG 之間信息傳輸的機密性、完整性、認證性和不可否認性保護,同時采用時間戳機制實現抗重放攻擊。為適應輕量化終端的物聯網應用場景,信息傳輸安全防護機制可基于輕量級對稱密碼算法 SM7 實現,即對用戶私鑰進行機密性保護的密鑰由 User/Client 密鑰載體的隨機數發生器產生,并滿足隨機數檢驗的相關標準。

為了描述用戶私鑰分發流程,本文定義 User/Client 的公開標識為 UID、私有標識為 SID,RA 的標識為 RAID;RA 公鑰為 RAPK、私鑰為 RASK,PKG 公鑰為 PKGPK、私鑰為 PKGASK;SM9 非對稱加密算法(PK 為公鑰)表示為,SM9 非 對 稱 解 密 算 法(SK 為私鑰)表示為(DATA), 簽 名 結 果 為 sign;對 稱 加 密 算 法(K為密鑰)表示為, 對 稱 解 密 算 法(K 為密鑰)表示為;雜湊結果為HMAC;User/Client 能夠通過 PPS 獲得 RA 的標識和 RA、PKG 的公鑰等參數 。

以下內容通過用戶終端認證及注冊和用戶私鑰在線分發兩個步驟對方案的具體實現機制和過程進行描述。

2.1 用戶終端認證及注冊

2.1.1 實施方案

用戶終端認證及注冊的實施方案如下:

(1)User/Client 通 過 RA 與 PKG 進 行 雙 向 身份 認 證。User/Client 采 用 PKG 對 SID 信息加密后上報 RA,RA 再請求 PKG 驗證 User/Client 的合法性,PKG 完成驗證后把結果告知 RA,實現對 User/Client 的認證;User/Client 通過隨機數挑戰—應答方式實現對 RA 的合法性判定。

(2)用戶注冊。User/Client 與 RA 認證成功后進行用戶注冊,注冊信息在 User/Client 與 RA 之間傳輸,采用數據加密、哈希計算、簽名驗證等安全防護設計,確保信息的機密性、完整性和可認證性。

2.1.2 流程設計

認證及注冊流程如圖 2 所示,其具體的流程如下文所述。

圖 2 用戶認證及注冊流程

(1)User/Client 發起認證請求。

①產生隨機數和時間戳, 并 在 本 地 保 存;

② 從 PPS 獲得 RAID,RAPK 和 PKGPK

③利用 PKGPK 對SID 加密生成

④利用 RAPK 對 UIDRAID 和加密生成

(2)User/Client 發送認證請求數據給 RA。

(3)RA 驗 證 認 證 請 求。

① 利 用 RASK 解 密獲 得 UIDRAID 和 

②利用 RAID 與自身標識比對,不一致則丟棄;

③利用 判斷是否重放攻擊;

④利用 RASK簽名獲得

(4)RA 發送認證請求數據給 PKG。

(5)PKG 驗 證 認 證 請 求。

① 從 PPS 獲 得RAPK,并對 驗簽,如果驗簽不通過則丟棄;

②利用 PKGSK 解密獲得 SID

③通過 SID 查找對應的 UID′,如果沒有找到則判定 為 非 法 用 戶;

④ 產 生 一 個 認 證 令 牌 TOKENTOKEN 用于后續用戶私鑰分發時數據完整性的校驗以及用戶對 PKG 合法性的校驗;

⑤利用 RAPK對 UID′,TOKEN 加密獲得

⑥利用 PKGSK 簽名 SIGNPKGSK(ARAPK(UID′||TOKEN))獲得

(6)PKG 返回驗證結果給 RA。

(7)RA 判 斷 User/Client 合 法 性, 同 時 發 起認 證 請 求。

① 從 PPS 獲 得 PKG 的 PKGPK,并對驗簽,如果驗證不通過則丟棄;

②利用 RASK解 密獲 得 UID′ 和TOKEN

③比對 UID′ 與本地保留的 UID 是否一致,如果不一致則用戶非法;

④產生隨機數

⑤利用 加密生成

⑥保留 UID 與TOKEN 對應關系;

⑦利用生成后續數據傳輸的加密密鑰 CK 和完整性密鑰 IK,與 UIDTOKEN 綁定后在本地存儲。

(8)RA 返回認證請求數據給 User/Client。

(9)User/Client 判斷 RA 合法性。

①利用步驟(1)產生的隨機數 解密,獲得 UID′TOKEN 和

②比對 UID′ 和 UID,如果不相等則 RA 為非法;

③利用密鑰生成函數生成后續數據傳輸的加密密鑰 CK 和完整性密鑰 IK,并本地保存 CK 和 IK

④生成時間

⑤利用 CK 加 密 ECK(UID||T2|| 用 戶 資 料 );

⑥利用 IK 用戶資料 ) 進行完整性保護

(10)User/Client 發起注冊請求用戶資料 )給 RA。

(11)RA 完成用戶終端注冊。

①利用 UID 與本地保存的 UID 比對,不一致丟棄數據;

②通過UID 查找 CK 和 IK

③利用 IK 對用戶資料 ) 進行哈希計算,與接收到的比對,如果不一致則丟棄;

④利用 CK 解密 用戶資料 ) 獲得 UID 和用戶資料;

⑤利用時間戳  判斷發送是否有效,防止重放攻擊;

⑥保存用戶資料到注冊表。

(12)RA 返回注冊成功消息給 User/Client,完成注冊。

2.2 用戶私鑰在線分發

2.2.1 實施方案

用戶注冊成功后,User/Client 向 PKG 申請私鑰,PKG 產生并分發用戶私鑰。用戶私鑰信息在 PKG與 RA 之間、RA 與 User/Client 之間傳輸采用數據加密、完整性校驗、簽名驗簽等安全防護設計,確保信息的機密性、完整性和可認證性,同時采用時間戳實現抗重放攻擊。

2.2.2 流程設計

用戶私鑰生成和下發流程如圖 3 所示,對流程的具體描述如下文所述。

圖 3 用戶私鑰生成和下發流程

(1)User/Client 發起私鑰請求。

① User/Client產生隨機數和時間戳,并本地保存;

②利用PKGPK 加密隨機數 生成 

③利用注冊時的 CK 加密

④利用注冊時的 IK 對加密數據進行完整性保護

(2)User/Client 發送私鑰請求數據給 RA。

(3)RA 驗證私鑰請求。

①利用 UID 查找 CK IK

②利用 CK 解密獲得 UID 和

③比對 UID 與本地保留的 UID,不一致則終端不合法;

④利用 IK 對數據進行哈希計算與進行比對,不一致則丟棄;

⑤利用  判定消息是否重放;

⑥產生隨機數,利用密鑰產生中心公鑰PKGPK 對隨機數 加密生成

⑦利用加密

⑧利用 RASK 簽名得 到

(4)RA 發送私鑰請求數據給 PKG。

(5)PKG 驗證私鑰請求,產生用戶私鑰。

①從 PPS 獲得 RAPK,并對驗簽,如果驗簽不通過則丟棄;

②利用 PKGSK 解密獲得 

③利用 解密獲 得 UID 和、;

④ 利 用 PKGSK 解 密獲 得 ,用于用戶私鑰 UIDSK的 保 護;

⑤ 利 用  判 斷 是 否 重 放 攻 擊;

⑥ 利 用UID、KMS 主密鑰及參數生成用戶私鑰 UIDSK,利用  作對稱密鑰加密 UIDSK 生成和時間戳

⑦利用注冊時生成的認證令牌 TOKEN進行哈希計算

⑧生成隨機數,并利用 RAPK 加 密

⑨ 利 用 加 密

⑩ 利用 PKGSK 簽 名獲得

(6)PKG 返回私鑰數據給 RA。

(7)RA 驗證私鑰數據合法性。

①從 PPS 獲得PKGPK,并對驗簽,如果驗簽不通過則丟棄;

②利用 RAPK 解密得到

③利用 解密獲 得 UID

④利用注冊時產生的 CK 加密

⑤利用注冊時產生的 IK 對加密數據進行哈希計算得到

(8)RA 返回私鑰數據給 User/Client。

(9)User/Client 對私鑰驗證和存儲。

①利用注冊時產生的 IK 對 進行哈希運算并與接收到的比較,不一致則判定為非法數據并丟棄;

②利用注冊產生的 CK解 密,獲得 UID

③核對UID 與自身是否一致,不一致則判定為非法數據并丟棄;

④利用注冊產生的 TOKEN 對進行哈希計算,與比較,不一致則判定為非法數據并丟棄;

⑤利用判斷消息是否為重放攻擊;

⑥利用本地保存的  解密得到 UIDSK

⑦本地保存 UIDSK

(10)User/Client 發送私鑰分配成功數據給 RA。

(11)RA 發送私鑰分配成功數據給 PKG。

(12)PKG 將用戶標識狀態信息發布到 PPS。

03可行性分析

3.1 安全性分析

用戶私鑰的安全直接關系到應用系統的安全運行,用戶私鑰安全分發是確保用戶私鑰安全的關鍵環節之一,因此需要提供完備的安全防護體系和安全的密鑰分發協議,確保用戶私鑰在線分發安全。

3.1.1 防護體系方面

本方案遵循 SM9 密鑰管理架構,基于現有 SM9私鑰離線分發規范標準,在實現 RA 與 PKG 之間的安全防護的同時,增加了 User/Client 與 RA、User/Client 與 PKG 之間的安全防護設計,具體采用了雙向身份認證、數據加密傳輸、數據完整性驗證、數據合法性驗證、時間戳防重放等安全防護技術,在User/Client、RA 和 PKG 三者之間構建完備的安全防護體系,有效保障用戶私鑰在線分發的安全。

3.1.2 密鑰分發協議方面

首先,本文基于 SID 的私密性和唯一性,利用 SM9 算法的加解密和簽名驗簽機制實現 User/Client 與 KMS(RA、PKG)之間的雙向身份認證,確保 User/Client 和 KMS 身份的合法性;

其次,利用身份認證過程中派生的加密密鑰和完整性密鑰,保護 User/Client 向 KMS 上傳用戶注冊數據、私鑰請求數據時,以及 KMS 生成私鑰數據下傳給 User/Client 時 的 機 密 性 和 完 整 性, 確 保 User/Client 和KMS 之間數據傳輸通道安全,防止數據被泄密、偽造和篡改;

再次,利用身份認證時生成的認證令牌TOKEN對下發的私鑰數據進行來源和合法性驗證,實現密鑰數據的可認證性和不可否認性;

最后,采用時間戳設計,規避數據重放攻擊。綜上,所提方案為密鑰在線安全分發實現提供了有效支撐。

3.2 實用性分析

海量的終端接入和有限的終端資源之間的矛盾一直是物聯網應用推廣的難點,而現實需求對密碼應用部署和密碼輕量化應用也提出了更高的要求。

3.2.1 密碼應用部署方面

本方案從物聯網海量終端接入的實際部署需求出發,提出了一種利用物聯網基礎網絡對終端設備進行用戶密鑰在線實時分發的方法,簡化了密鑰管理流程,減輕了密鑰管理系統壓力,可有效縮短應用部署時間和節省管理成本,有效滿足海量終端接入的物聯網應用場景的需要。

3.2.2 對應用系統的影響方面

本方案從物聯網終端資源有限的實際出發,對密鑰數據的加密保護采用輕量級對稱密碼算法(如SM7),能較好地滿足物聯網應用場景的要求。此外,考慮到物聯網終端密鑰在線初裝后密鑰更換的頻次要求較低,用戶密鑰在線分發協議增加的資源開銷對應用系統和 User/Client 的影響不大。因此本方案具有較好的實用性和推廣價值。

04結 語

物聯網應用采用 SM9 密碼系統進行信息安全防護已成為業界研究熱點。本文基于 GM/T 0086—2020《基于 SM9 標識密碼算法的密鑰管理系統技術規范標準》提出了 SM9 用戶私鑰在線分發新技術,解決了用戶終端與密鑰管理中心之間信息交換的安全防護問題。

本文在機密性、合法性、完整性、可認證性和抗重放攻擊等方面進行了安全設計,確保用戶終端在線下載用戶私鑰的安全。所提方案相較于用戶密鑰離線分發具有較大優勢,特別適用于5G 網絡物聯網場景的應用,為進一步推動 SM9 在物聯網的實用化進程提供了一種新的思路和方法。