本發明涉及密碼應用,特別涉及一種三方協同的雙證書簽發方法及系統。
背景技術:
1、根據《gm/t0034-2014基于sm2密碼算法的證書認證系統密碼及其相關安全技術規范》要求,國密pki體系采用“雙證書”模式——同一實體同時持有簽名證書和加密證書。簽名證書的密鑰對由用戶自行生成,保證簽名行為的不可否認性;加密證書的密鑰對由密鑰管理中心(kmc)統一生成和托管,實現加密密鑰的集中管理與恢復能力。
2、雙證書簽發流程涉及注冊機構(ra)→證書頒發機構(ca)→密鑰管理中心(kmc)三方協同,橫跨兩種協議:其一為證書管理協議cmp(rfc4210),用于ra與ca之間的證書申請、簽發、撤銷等管理操作的通信;其二為《gm/t0014-2012數字證書認證系統密碼協議規范》,用于ca與kmc之間的密鑰申請、密鑰恢復、密鑰吊銷等密鑰管理操作的通信。ca需先向kmc通過gm/t0014協議申請加密密鑰,再基于kmc返回的公鑰構建加密證書,最后與簽名證書一起持久化并通過cmp協議返回給ra。這一流程對事務一致性要求極高。
3、此外,在國密pki體系中,硬件密碼機(hsm)承擔密碼運算和密鑰安全存儲的基礎角色。簽發者ca的私鑰托管于hsm中,所有涉及ca私鑰的簽名操作(如證書簽名、協議報文簽名)均通過hsm接口完成,私鑰不超出硬件安全邊界。
4、然而,傳統的雙證書簽發技術存在以下缺陷或不足:
5、1、缺乏單次請求完成三方協同簽發的完整方案:雙證書簽發流程中,現有ca系統通常將簽名證書和加密證書作為獨立流程分別處理,或需要ra端發起多次請求并維護多步交互的中間狀態。現有技術缺少在單次cmp請求中完成ra→ca→kmc三方協同、同時簽發簽名證書和加密證書并原子性持久化的完整方案。
6、2、ca與kmc之間缺乏跨系統事務補償機制:雙證書簽發流程中,若ca在通過gm/t0014協議向kmc成功申請加密密鑰后、證書入庫前發生業務異常(如數據庫寫入失敗),ca端事務回滾,但kmc端已生成的密鑰無法隨ca事務自動回滾,導致kmc存在"孤立密鑰"。現有ca系統普遍缺乏跨系統的事務補償機制,且由于ca與kmc通過網絡通信,無法使用傳統分布式事務(兩階段提交/xa協議)保證原子性。
7、3、ca與kmc之間缺乏系統性的通信安全認證機制:雙證書簽發流程中,ca與kmc之間的密鑰申請請求和響應需經網絡傳輸,存在被篡改或偽造的風險。現有技術中,部分實現缺乏對請求和響應的雙向簽名認證,或采用軟件簽名方式導致私鑰存在于應用內存中,缺乏硬件級別的密鑰保護和防重放機制。
8、針對相關技術中的問題,目前尚未提出有效的解決方案。
技術實現思路
1、本發明實施例提供了一種三方協同的雙證書簽發方法及系統,以解決現有技術中的上述技術的問題。
2、根據本發明實施例的第一方面,提供了一種三方協同的雙證書簽發方法。
3、在一個實施例中,所述三方協同的雙證書簽發方法,包括:
4、簽名證書構建:通過注冊機構發起證書管理協議請求,證書頒發機構接收請求并對用戶公鑰的算法標識進行校驗,校驗通過后利用硬件密碼機構建簽名證書;
5、加密密鑰申請:基于哈希摘要生成證書頒發機構的實體標識符,并結合隨機任務號封裝得到密鑰服務請求;利用硬件密碼機對密鑰服務請求進行簽名,生成證書頒發機構的請求結構,并使用證書頒發機構進行響應驗證,驗證通過后提取密鑰數據并注冊回調事件;
6、加密證書構建:提取密鑰數據中的加密公鑰作為主體公鑰,并結合主題名稱、加密證書專屬擴展配置及加密證書的預設標準字段,通過硬件密碼機構建加密證書,其中,加密證書與簽名證書的主題名稱及簽發者主題名稱相同;
7、雙證書原子性持久化與響應:通過關聯標識字段將簽名證書與加密證書綁定,并在同一數據庫事務中持久化;持久化完成后構建證書響應消息,并將經證書頒發機構簽名保護后的公鑰基礎設施消息返回給注冊機構;
8、其中,在加密證書構建及雙證書原子性持久化與響應過程中發生異常導致業務事務回滾時,執行基于事務事件監聽機制的分布式補償,通知密鑰管理中心清理已分配的密鑰,以保障證書頒發機構與密鑰管理中心的密鑰一致性。
9、在一個實施例中,所述通過注冊機構發起證書管理協議請求,證書頒發機構接收請求并對用戶公鑰的算法標識進行校驗,校驗通過后利用硬件密碼機構建簽名證書包括:
10、通過注冊機構向證書頒發機構發起證書管理協議請求;證書頒發機構接收證書管理協議請求,并從證書管理協議請求中提取用戶公鑰及主題名稱;
11、獲取用戶公鑰的算法標識,當算法標識為通用橢圓曲線類型時,將用戶公鑰轉換為橢圓曲線公鑰對象,并從算法參數中提取對象標識符;
12、當對象標識符為sm2曲線的對象標識符時,糾正算法標識為sm2,并將糾正后的算法標識與簽名證書模板的密鑰算法及加密證書模板的密鑰算法分別對比,當出現任一不匹配時拒絕簽發;
13、基于主題名稱及用戶公鑰,結合預設標準字段,通過硬件密碼機調用簽發者證書頒發機構的私鑰構建簽名證書;
14、利用簽發者證書頒發機構的公鑰對簽名證書的簽名值進行驗證,以確認證書數據完整且簽名正確,當驗證失敗時則終止簽發并提示異常。
15、在一個實施例中,所述基于主題名稱及用戶公鑰,結合預設標準字段,通過硬件密碼機調用簽發者證書頒發機構的私鑰構建簽名證書包括:
16、獲取簽發者證書頒發機構在硬件密碼機中的密碼令牌及密鑰引用;
17、設置版本號、簽名證書序列號、簽發者主題名稱、有效期、主題名稱、主體公鑰信息及簽名算法標識,并加載證書模板中簽名證書專屬的擴展字段配置;
18、利用密鑰工具獲取硬件密碼機支持的內容簽名器,并調用硬件密碼機接口使用簽發者證書頒發機構的私鑰進行簽名,生成完整的簽名證書。
19、在一個實施例中,所述基于哈希摘要生成證書頒發機構的實體標識符,并結合隨機任務號封裝得到密鑰服務請求;利用硬件密碼機對密鑰服務請求進行簽名,生成證書頒發機構的請求結構,并使用證書頒發機構進行響應驗證,驗證通過后提取密鑰數據并注冊回調事件包括:
20、從簽發者證書頒發機構中提取主體公鑰信息結構,計算主體公鑰信息結構中der編碼字節序列的sm3哈希摘要,并將得到的哈希值作為簽發者證書頒發機構的公鑰指紋,整合哈希值、簽發者主題名稱及簽發者證書頒發機構的證書序列號構成證書頒發機構的實體標識結構;
21、將加密證書序列號、用戶簽名公鑰、證書有效期、密鑰算法標識及密鑰長度封裝為密鑰申請請求結構,并連同證書頒發機構的實體標識結構及隨機生成的任務號一起封裝為密鑰服務請求結構;
22、對密鑰服務請求結構進行der編碼,得到待簽名的字節序列,調用硬件密碼機使用簽發者證書頒發機構的私鑰對待簽名的字節序列進行簽名,并將簽名算法標識、簽名值及密鑰服務請求一起封裝為證書頒發機構的請求結構,發送至密鑰管理中心;
23、密鑰管理中心接收請求結構進行處理,并返回由密鑰管理中心自身私鑰簽名的密鑰服務響應;證書頒發機構接收密鑰管理中心返回的密鑰服務響應并進行響應驗證;
24、驗證通過后,從密鑰服務響應中提取sm2加密公鑰及數據信封格式的加密私鑰密文,并通過進程內事件發布器向應用事件總線發布密鑰管理中心回調事件,且回調事件載荷包含密鑰管理中心的連接信息、簽發者證書頒發機構的密鑰引用、簽名算法標識、簽發者主題名稱、加密證書序列號及密鑰請求類型標識。
25、在一個實施例中,所述響應驗證包括使用預配置的密鑰管理中心證書公鑰驗證響應簽名、驗證響應中的密鑰管理中心證書序列號與預配置值的一致性、驗證響應中任務號與請求中任務號的一致性。
26、在一個實施例中,所述提取密鑰數據中的加密公鑰作為主體公鑰,并結合主題名稱、加密證書專屬擴展配置及加密證書的預設標準字段,通過硬件密碼機構建加密證書包括:
27、將sm2加密公鑰中的公鑰信息結構編碼解析為橢圓曲線公鑰對象,得到解析后的加密公鑰;
28、將解析后的加密公鑰作為加密證書的主體公鑰,使用主題名稱作為證書主題名稱,并結合加密證書專屬擴展配置及加密證書獨立的序列號、有效期的標準字段,通過硬件密碼機調用簽發者證書頒發機構的私鑰構建加密證書;
29、利用簽發者證書頒發機構的公鑰對加密證書的簽名值進行驗證,以確認證書數據完整且簽名正確,當驗證失敗時則終止簽發并提示異常。
30、在一個實施例中,所述通過關聯標識字段將簽名證書與加密證書綁定,并在同一數據庫事務中持久化;持久化完成后構建證書響應消息,并將經證書頒發機構簽名保護后的公鑰基礎設施消息返回給注冊機構包括:
31、在簽名證書的數據記錄中,通過加密證書關聯標識字段將簽名證書與加密證書一對一綁定,并在同一業務事務中將簽名證書和加密證書的字段持久化至數據庫;
32、持久化完成后,構建證書管理協議的證書響應消息,其中,證書響應消息包括承載簽名證書的證書響應體、承載加密證書和加密密鑰結構的證書響應體;
33、將兩個證書響應體封裝為完整的公鑰基礎設施消息,并在經簽發者證書頒發機構簽名保護后返回給注冊機構。
34、在一個實施例中,所述執行基于事務事件監聽機制的分布式補償,通知密鑰管理中心清理已分配的密鑰包括:
35、密鑰管理中心回調事件監聽器接收回調事件作為輸入參數,從事件載荷中提取密鑰管理中心的連接信息、簽發者證書頒發機構的密鑰引用、簽名算法標識、簽發者主題名稱、加密證書序列號及密鑰請求類型標識的補償數據;
36、獲取簽發者主題名稱、加密證書序列號及密鑰請求類型標識的字段,并將字段序列化為預設格式的結構化數據,作為回調請求體;
37、獲取簽發者證書頒發機構的密鑰引用及簽名算法標識,調用硬件密碼機,結合簽發者證書頒發機構的私鑰對回調請求體的字節序列進行簽名,并將簽名值放入預設的http請求頭字段,將簽名算法標識放入簽名算法請求頭字段,得到簽名請求頭;
38、獲取密鑰管理中心的連接信息,并向密鑰管理中心的回調接口發送回調請求體及簽名請求頭;密鑰管理中心接收請求,并從簽名請求頭中提取簽名值和簽名算法,使用預配置的簽發者證書頒發機構的公鑰對請求體進行簽名驗證,驗證通過后根據加密證書序列號和密鑰請求類型標識清理對應的孤立密鑰;
39、在回調請求執行完成后,在事務回滾感知步驟中,以獨立新事務傳播策略開啟的獨立事務中將補償執行記錄寫入回滾日志表。
40、在一個實施例中,在提取補償數據后,還包括采用三重機制組合確保補償的可靠執行,其中,三重機制組合包括事務回滾階段監聽、獨立新事務傳播及異步線程池執行。
41、根據本發明實施例的第二方面,提供了一種三方協同的雙證書簽發系統。
42、在一個實施例中,所述三方協同的雙證書簽發系統,包括:
43、簽名證書構建模塊,用于通過注冊機構發起證書管理協議請求,證書頒發機構接收請求并對用戶公鑰的算法標識進行校驗,校驗通過后利用硬件密碼機構建簽名證書;
44、加密密鑰申請模塊,用于基于哈希摘要生成證書頒發機構的實體標識符,并結合隨機任務號封裝得到密鑰服務請求;利用硬件密碼機對密鑰服務請求進行簽名,生成證書頒發機構的請求結構,并使用證書頒發機構進行響應驗證,驗證通過后提取密鑰數據并注冊回調事件;
45、加密證書構建模塊,用于提取密鑰數據中的加密公鑰作為主體公鑰,并結合主題名稱、加密證書專屬擴展配置及加密證書的預設標準字段,通過硬件密碼機構建加密證書,其中,加密證書與簽名證書的主題名稱及簽發者主題名稱相同;
46、雙證書原子性持久化與響應模塊,用于通過關聯標識字段將簽名證書與加密證書綁定,并在同一數據庫事務中持久化;持久化完成后構建證書響應消息,并將經證書頒發機構簽名保護后的公鑰基礎設施消息返回給注冊機構;
47、分布式補償模塊,用于在加密證書構建及雙證書原子性持久化與響應過程中發生異常導致業務事務回滾時,執行基于事務事件監聽機制的分布式補償,通知密鑰管理中心清理已分配的密鑰,以保障證書頒發機構與密鑰管理中心的密鑰一致性。
48、根據本發明實施例的第三方面,提供了一種計算機設備。
49、在一些實施例中,所述計算機設備包括存儲器和處理器,所述存儲器存儲有計算機程序,所述處理器執行所述計算機程序時實現上述方法的步驟。
50、根據本發明實施例的第四方面,提供了一種計算機可讀存儲介質。
51、在一個實施例中,所述計算機可讀存儲介質上存儲有計算機程序,所述計算機程序被處理器執行時實現上述方法的步驟。
52、本發明實施例提供的技術方案可以包括以下有益效果:
53、1)三方協同原子性簽發:本發明可以在單次cmp請求中完成ra→ca→kmc三方協同,簽名證書(用戶提交公鑰)與加密證書(kmc生成公鑰)在同一業務事務中完成構建和持久化,通過cmp響應一次性返回雙證書及數字信封格式的加密私鑰密文,避免了多次請求交互帶來的狀態管理復雜性和數據不一致風險。
54、2)硬件密碼機全鏈路簽名保護:本發明的證書簽名、kmc密鑰申請請求簽名、回滾補償回調簽名均通過硬件密碼機(hsm)完成,私鑰不超出硬件安全邊界,ca與kmc之間通過請求簽名和響應簽名實現雙向身份認證,結合隨機任務號防重放校驗,保障了跨系統通信鏈路的完整性和不可偽造性。
55、3)sm3公鑰哈希的ca實體標識:本發明使用sm3算法對簽發者ca公鑰的subjectpublickeyinfo?der編碼進行哈希摘要生成ca實體標識符,從而可以在唯一標識請求來源ca的同時避免在協議報文中暴露完整公鑰信息,降低了密鑰信息泄露面。
56、4)分布式密鑰一致性保障:本發明通過“事務回滾階段監聽(after_rollback)+獨立新事務傳播(requires_new)+異步線程池執行”的三重機制組合,可以在ca業務事務回滾后自動觸發補償流程,經硬件密碼機簽名認證后通知kmc清理已分配的孤立密鑰,補償操作與業務事務完全隔離且不阻塞業務線程,同時無論補償成功或失敗均持久化審計日志,實現了跨系統的最終一致性保障。
57、應當理解的是,以上的一般描述和后文的細節描述僅是示例性和解釋性的,并不能限制本發明。