群組偽公鑰中的群組標識符從密鑰服務系統(tǒng)獲取群組的當前有效的群組公鑰,并將獲得的當前有效的群組公鑰保存到密碼模塊本地,然后使用獲得的當前有效的群組公鑰對數(shù)據(jù)進行加密;在使用群組的當前有效的群組公鑰對數(shù)據(jù)加密后,密碼模塊將所使用的當前有效的群組公鑰的標識信息作為解密加密數(shù)據(jù)的群組秘密密鑰的標識信息按預先約定的方式放入到加密后的數(shù)據(jù)中(比如將標識信息作為填充或附加數(shù)據(jù)直接存放到加密后的數(shù)據(jù)中);所述當前有效的群組公鑰即在使用群組公鑰進行數(shù)據(jù)加密時刻有效的群組公開密鑰對的公鑰。
[0017]若所述加密模塊中的群組密鑰對象中存放的秘密密鑰是對稱密鑰,則當密碼應用程序通過密碼模塊的接口使用一個群組密鑰對象對數(shù)據(jù)進行加密時,密碼模塊檢查群組密鑰對象中是否有當前有效的群組秘密密鑰,若有,則使用當前有效的群組秘密密鑰對數(shù)據(jù)進行加密;否則,密碼模塊先使用群組密鑰對象中的群組標識符從密鑰服務系統(tǒng)獲得當前有效的群組秘密密鑰,并將獲得的當前有效的群組秘密密鑰及群組秘密密鑰的標識信息保存到群組密鑰對象中,然后再使用當前有效的群組秘密密鑰對數(shù)據(jù)進行加密;密碼模塊在使用群組秘密密鑰對數(shù)據(jù)進行加密后,將所使用的當前有效的群組秘密密鑰的標識信息作為解密加密數(shù)據(jù)的群組秘密密鑰的標識信息按預先約定的方式放入到加密后的數(shù)據(jù)中(比如放入到加密后的數(shù)據(jù)的頭部位置或尾部位置);所述當前有效的群組秘密密鑰是指在使用秘密密鑰進行數(shù)據(jù)加密時刻有效的群組秘密密鑰(群組對稱密鑰)。
[0018]當密碼應用程序通過所述密碼模塊的接口使用一個群組密鑰對象對加密數(shù)據(jù)進行解密時,密碼模塊按如下方式進行數(shù)據(jù)解密處理:
[0019]第I步:從待解密的加密數(shù)據(jù)中獲得加密方的密碼模塊在加密時放入的群組秘密密鑰的標識信息;
[0020]第2步:檢查密碼應用程序使用的群組密鑰對象中是否有第I步獲得的群組秘密密鑰的標識信息所對應的群組秘密密鑰,若有,則使用對應的群組秘密密鑰對加密數(shù)據(jù)進行解密;否則,從群組密鑰對象或者從加密數(shù)據(jù)中的群組秘密密鑰的標識信息中獲得群組標識符,使用獲得的群組標識符從密鑰服務器獲取加密數(shù)據(jù)中的群組秘密密鑰的標識信息所對應的群組秘密密鑰,并將獲取的群組秘密密鑰及群組秘密密鑰的標識信息保存在群組密鑰對象中,然后使用獲取的群組秘密密鑰對加密數(shù)據(jù)進行解密。
[0021]所述密碼模塊使用群組標識符從密鑰服務器獲取當前有效的群組秘密密鑰的過程如下:
[0022]第一步:密碼模塊連接群組管理系統(tǒng),提交群組標識符(群組ID),請求獲取證明用戶是群組成員的群組令牌;
[0023]第二步:群組管理系統(tǒng)對用戶進行身份鑒別,身份鑒別通過后群組管理系統(tǒng)通過用戶數(shù)據(jù)庫檢查確認用戶是否是密碼模塊提交的群組標識符所對應的群組中的成員,若檢查確認通過,則向密碼模塊返回證明用戶是群組成員的群組令牌,返回的群組令牌中有用戶所屬群組的群組標識符信息和群組令牌的有效時間,且群組令牌被數(shù)字簽名;若身份鑒別不通過,或者用戶不屬于密碼模塊提交的群組標識符所對應的群組,則返回出錯;
[0024]第三步:密碼模塊獲得證明用戶是群組成員的群組令牌后,將群組令牌和獲取群組秘密密鑰的請求提交到密鑰服務系統(tǒng),請求中有要獲取的群組秘密密鑰的標識信息;
[0025]第四步:密鑰服務系統(tǒng)先驗證確認群組令牌的有效性,包括時間有效性和數(shù)字簽名有效性,有效性驗證確認通過后根據(jù)群組令牌確認用戶是否是群組成員,從而確認用戶是否被允許獲取請求中的群組秘密密鑰標識信息所對應的群組秘密密鑰,確認通過后生成請求中的群組秘密密鑰標識信息所對應的群組秘密密鑰,并返回到密碼模塊。
[0026]若所述密碼模塊的群組密鑰對象中的秘密密鑰是對稱密鑰,而密碼應用程序使用對稱密鑰密碼算法進行數(shù)據(jù)加密和解密處理,則密碼應用程序被配置為使用群組密鑰對象進行數(shù)據(jù)加密和解密處理;若所述密碼模塊的群組密鑰對象中的群組秘密密鑰是公開密鑰對的私鑰,而密碼應用程序使用公開密鑰密碼算法進行數(shù)據(jù)加密和解密處理,則密碼應用程序被配置為使用群組密鑰對象進行數(shù)據(jù)解密處理,被配置為使用群組偽公鑰進行數(shù)據(jù)加密處理。
[0027]若所述密碼模塊的群組密鑰對象中的群組秘密密鑰是公開密鑰對的私鑰且密碼應用程序通過數(shù)字證書進行數(shù)據(jù)加密和解密處理,則一個群組密鑰對象被設置成為或關聯(lián)成為一個偽數(shù)字證書(群組偽數(shù)字證書)的私鑰對象,而密碼應用程序被配置為(自動或手工配置為)通過偽數(shù)字證書使用群組公鑰和群組私鑰進行數(shù)據(jù)加密和解密處理;所述偽數(shù)字證書是一個具有X509格式但證書上的公鑰是群組偽公鑰的數(shù)字證書;所述偽數(shù)字證書由一個單獨的CA系統(tǒng)簽發(fā)或者由一個在用戶計算設備中自生成、自簽名的CA證書的私鑰簽發(fā);在不同用戶計算設備上使用自生成、自簽名的CA證書的私鑰所簽發(fā)的、針對同一個群組的偽數(shù)字證書的簽發(fā)者名(Issuer Name)和序列號(Serial Number)相同;由單獨CA系統(tǒng)簽發(fā)或者在用戶計算設備中自生成、自簽名的CA證書的私鑰簽發(fā)的偽數(shù)字證書的有效期覆蓋所有群組秘密密鑰的有效期。
[0028]從以上描述可以看到,一個群組的一系列秘密密鑰在用戶計算裝置的密碼模塊中用一個密鑰對象存儲;在數(shù)據(jù)加密和解密過程中如果需要獲取一個新的群組秘密密鑰或恢復之前的一個群組秘密密鑰,密碼模塊會自動連接群組管理系統(tǒng)和密鑰管理系統(tǒng)獲取所需的群組秘密密鑰,無需用戶反復進行安裝配置。如果一個密碼應用程序通過數(shù)字證書進行數(shù)據(jù)的加密和解密,則用戶或密碼應用程序只需進行一次數(shù)字證書的安裝配置即可通過數(shù)字證書使用群組秘密密鑰進行數(shù)據(jù)加密和解密。
【附圖說明】
[0029]圖1為本發(fā)明的結構示意圖。
【具體實施方式】
[0030]下面結合附圖和實施例對本發(fā)明作進一步的描述。
[0031]下面先描述密碼模塊的實現(xiàn)。密碼模塊既可以按標準接口(如Windows CSP、PKCS#11)實現(xiàn),也可以按自動定義接口實現(xiàn),取決于密碼應用程序。如果密碼應用程序是通過標準的密碼接口調用密碼模塊,則密碼模塊按標準密碼接口實現(xiàn),否則,按自定義密碼接口實現(xiàn)。進一步的實施方式取決于群組秘密密鑰是對稱密鑰還是公開密鑰對的私鑰,以及在群組秘密密鑰是私鑰時群組密鑰對象中是否保存群組標識符。
[0032]若群組秘密密鑰是對稱密鑰,或者群組秘密密鑰是私鑰且群組密鑰對象中保存群組標識符,則群組秘密密鑰的標識信息的實施方案如下。
[0033]群組秘密密鑰的標識信息,包括加密數(shù)據(jù)中的當前有效的群組秘密密鑰的標識信息以及群組密鑰對象中的群組秘密密鑰的標識信息,可用一個時間有效期和序列號來表示,作為群組秘密密鑰的標識信息,比如:起始時間結束時間“ I ”序列號(引號中的內容原樣保持),其中,起始時間“:”結束時間表示有效期,而序列號表示該有效期內的一個秘密密鑰,序列號用于應對群組秘密密鑰的泄露,比如,若在某個有效期內的群組秘密密鑰被泄露,則在此有效期內可使用另一個序列號不同的秘密密鑰。序列號可用數(shù)字表示,其初始值可取O。密碼模塊可從群組密鑰對象或群組偽公鑰中獲得群組標識符,并結合時間有效期和序列號唯一標識和識別一個群組秘密密鑰。
[0034]若群組秘密密鑰是對稱密鑰,或者群組秘密密鑰是私鑰且群組密鑰對象中保存有群組標識符,則密碼模塊的密鑰管理接口要實現(xiàn)如下功能:
[0035](I)密鑰生成接口要有額外的參數(shù)輸入群組標識符(密碼模塊按標準接口實施時,此密鑰生成接口是自定義的額外接口),或者在密鑰生成接口被調用生成秘密密鑰(對象)時,密碼模塊彈出窗口要求用戶進一步輸入群組標識符(密碼模塊按標準接口實施時,此密鑰生成接口是標準接口);