面向公鑰密碼應用的共享對稱密鑰數據加密和解密方法
【技術領域】
[0001]本發(fā)明屬于信息安全領域,是一種對稱密鑰的非對稱密鑰使用方法,特別是一種公鑰密碼應用程序能夠使用群組成員間共享的對稱密鑰對群組成員交互的信息進行加密和解密方法。
【背景技術】
[0002]非對稱密鑰密碼算法(即公開密鑰密碼算法)的密鑰分發(fā)簡單,但實現復雜、密碼運算速度慢;對稱密鑰密碼算法實現簡單、密碼運算速度快,但密鑰分發(fā)麻煩。但是,通過一個密鑰服務系統(tǒng)在群組成員間共享對稱密鑰并不是一件困難和復雜的事情。
[0003]目前的很多加密應用,如加密電子郵件,都是基于非對稱密鑰密碼算法(公開密鑰密碼算法)實現郵件加密和解密的。但是,如果群組成員之間共享是對稱密鑰,則無法使用共享對稱密鑰對通過基于非對稱密鑰密碼算法的密碼應用程序(公鑰密碼應用程序)在群組成員之間交換加密信息。如何使得基于非對稱密鑰密碼算法的密碼應用程序能夠使用群組共享對稱密鑰對群組成員之間交換的信息進行加密和解密是正本發(fā)明要解決的問題,解決這個問題時還要考慮群組共享對稱密鑰經常更新的問題。
【發(fā)明內容】
[0004]本發(fā)明的目的是提出一種公鑰密碼應用程序能夠使用群組成員間共享的對稱密鑰對群組成員交互的信息進行加密和解密方法。
[0005]為了實現上述目的,本發(fā)明所采用的技術方案是:
[0006]一種面向公鑰密碼應用的共享對稱密鑰數據加密和解密方法,其特點是:
[0007]將群組成員之間共享的對稱密鑰存放在密碼模塊中的一個被標識為存放非對稱密鑰密碼算法類型(如RSA、ECC、IBC等)的私鑰或密鑰對的永久性或臨時性的密鑰對象中;所述群組是具有共同特性或目標的用戶的集合;所述群組成員之間共享的對稱密鑰稱為群組對稱密鑰;所述密碼模塊是一個面向密碼應用程序提供密碼功能調用(包括密鑰管理和密碼運算)的軟件組件和軟硬件結合的組件;所述存放群組成員共享的對稱密鑰的密鑰對象稱為群組密鑰對象;所述群組密鑰對象中同時存放有群組對稱密鑰所屬群組的群組標識符;所述群組標識符是一個用于唯一標識群組的字符串;
[0008]將一個偽公鑰與一個群組相對應;所述與群組對應的偽公鑰稱為群組偽公鑰;所述群組偽公鑰是一個標識為非對稱密鑰密碼算法類型的公鑰數據結構,但其中存放的數據不是真正的公鑰數據,而是群組標識符以及特征數據;所述特征數據用于區(qū)分真正的公鑰和群組偽公鑰;所述群組偽公鑰被標識的非對稱密鑰密碼算法類型與群組密鑰對象被標識的非對稱密鑰密碼算法類型相同;
[0009]當密碼應用程序使用公鑰調用密碼模塊進行數據加密時,密碼模塊先判斷密碼應用程序使用的公鑰是真正的公鑰還是群組偽公鑰,若是真正的公鑰,則按使用真正的公鑰的方式對數據進行加密處理,否則,密碼模塊按如下方式進行處理:先從群組偽公鑰中獲取群組標識符,然后查看密碼模塊中是否有一個群組密鑰對象,其存放的群組標識符與從群組偽公鑰中獲取的群組標識符相同,即是否有一個與從群組偽公鑰中獲取的群組標識符相對應的群組密鑰對象,若有,則使用群組偽公鑰中的群組標識符所對應的群組密鑰對象中的群組對稱密鑰對數據進行加密處理;若沒有,則返回錯誤或提示用戶;
[0010]當密碼應用程序使用群組密鑰對象調用密碼模塊對加密數據進行解密時,密碼模塊使用群組密鑰對象中的與數據加密時所用群組對稱密鑰相同的群組對稱密鑰對加密數據進行解密。
[0011]若群組成員之間共享的對稱密鑰是一系列在不同時期有效的對稱密鑰,則所述群組密鑰對象中存放的是一系列在不同時期有效的群組對稱密鑰,而此一系列在不同時期有效的群組對稱密鑰中的每個對稱密鑰又有各自的標識信息,稱為群組對稱密鑰的標識信息;群組密鑰對象中保存的每個群組對稱密鑰在群組密鑰對象中同時保存有對應的密鑰標識信息(用于查找、對應每個群組對稱密鑰)。
[0012]若所述群組密鑰對象中存放的是一系列在不同時期有效的群組對稱密鑰,則當密碼應用程序使用群組偽公鑰調用密碼模塊進行數據加密時,密碼模塊按如下方式使用群組偽公鑰中的群組標識符所對應的群組密鑰對象中的群組對稱密鑰對數據進行加密處理:密碼模塊檢查群組密鑰對象中是否有當前有效的群組對稱密鑰,若有,則使用當前有效的群組對稱密鑰對數據進行加密;否則,密碼模塊先利用從群組偽公鑰或群組密鑰對象中獲得的群組標識符從密鑰服務系統(tǒng)獲得當前有效的群組對稱密鑰,并將獲取的當前有效的群組對稱密鑰及當前有效的群組對稱密鑰的標識信息保存到群組密鑰對象中,然后再使用當前有效的群組對稱密鑰對數據進行加密;在使用當前有效的群組對稱密鑰對數據進行加密后,密碼模塊將所使用的當前有效的群組對稱密鑰的標識信息作為解密加密數據的群組對稱密鑰的標識信息按預先約定的方式放入到加密后的數據中;所述當前有效的群組對稱密鑰是指在使用群組對稱密鑰進行數據加密時刻有效的群組對稱密鑰。
[0013]若所述群組密鑰對象中存放的是一系列在不同時期有效的對稱密鑰,則在密碼應用程序使用群組密鑰對象調用密碼模塊對加密數據進行解密時,密碼模塊按如下方式使用群組密鑰對象中的與數據加密時所用群組對稱密鑰相同的群組對稱密鑰對加密數據進行解密:
[0014]第I步:先從待解密的加密數據中獲得加密方的密碼模塊在數據加密時放入的作為解密加密數據的群組對稱密鑰的標識信息;
[0015]第2步:檢查密碼應用程序使用的群組密鑰對象中是否有第I步獲得的群組對稱密鑰的標識信息所對應的群組對稱密鑰,若有,則使用對應的群組對稱密鑰對加密數據進行解密;否則,利用從密鑰對象獲得中的群組標識符和第I步獲得的群組對稱密鑰的標識信息從密鑰服務器獲取用作解密加密數據的群組對稱密鑰(也即加密數據時所用的群組對稱密鑰),并將獲取的群組對稱密鑰及獲取的群組對稱密鑰的標識信息保存在群組密鑰對象中,然后使用獲取的群組對稱密鑰對加密數據進行解密。
[0016]所述密鑰服務系統(tǒng)是一個群組對稱密鑰的生成和分發(fā)系統(tǒng);當密碼模塊從密鑰服務系統(tǒng)獲取用戶的群組對稱密鑰時,所述密鑰服務系統(tǒng)要對密碼模塊的使用者進行身份鑒另IJ,確定密碼模塊的使用者具有獲取群組對稱密鑰的權限或許可。
[0017]密碼模塊在使用群組對稱密鑰對數據進行加密后,按如下方式將所使用的當前有效的群組對稱密鑰的標識信息作為解密加密數據的群組對稱密鑰的標識信息放入到加密后的數據中:將所使用的當前有效的群組對稱密鑰的標識信息附加在加密后的數據之后或之前,然后在生成的數據之后再填上隨機數據或約定的填充數據使得最后生成的數據塊的長度等于使用群組偽公鑰所對應的非對稱密鑰密碼算法類型的公鑰(如1024位的RSA公鑰)對數據加密后生成的數據塊的長度。
[0018]若密碼應用程序使用非對稱密鑰密碼算法進行數據加密和解密,則密碼應用程序被配置為使用群組密鑰對象進行數據解密處理,以及被配置為使用群組偽公鑰進行數據加密處理。
[0019]若密碼應用程序通過數字證書進行數據加密和解密,則一個群組密鑰對象被設置成為或關聯成為一個偽數字證書(群組偽數字證書)的私鑰對象,而密碼應用程序被配置為(自動或手工配置為)通過偽數字證書進行數據加密和解密;所述偽數字證書是一個具有X509格式但證書上的公鑰是群組偽公鑰的數字證書;所述偽數字證書由一個單獨的CA系統(tǒng)簽發(fā)或者由一個在用戶計算設備中自生成、自簽名的CA證書的私鑰簽發(fā);在不同用戶計算設備上使用自生成、自簽名的CA證書的私鑰所簽發(fā)的、針對同一個群組的偽數字證書的簽發(fā)者名(Issuer Name)和序列號(Serial Number)相同;由單獨CA系統(tǒng)簽發(fā)或者在用戶計算設備中由自生成、自簽名的CA證書的私鑰簽發(fā)的偽數字證書的有效期覆蓋所有群組對稱密鑰的有效期。
[0020]從以上描述可以看到,通過群組偽公鑰,密碼模塊將公鑰密碼應用程序使用公鑰進行數據加密的操作轉化為使用群組共享對稱密鑰進行數據加密的操作處理;通過一個被標識為存放私鑰或密鑰對而實際上存放群組共享密鑰的密鑰對象,密碼模塊將密碼應用程序使用私鑰進行數據解密的操作轉化為使用群組共享對稱密鑰進行數據解密的操作處理;進一步地,若群組成員共享的是一系列在不同時期有效的對稱密鑰,則密碼模塊自動獲取加密和解密數據時所需的、在不同時期有效的群組共享對稱密鑰。通過本發(fā)明的方法公鑰密碼應用程序能夠使用群組成員共享的對稱密鑰對群組成員交互的信息進行加密和解密。
【附圖說明】
[0021]圖1為本發(fā)明的結構示意圖。
【具體實施方式】
[0022]下面結合附圖和實施例對本發(fā)明作進一步的描述。
[0023]本發(fā)明的方法主要通過密碼模塊來實施,而密碼模塊既可以按標準接口(如Windows CSP、PKCS#11)來實現,也可以按自動定義接口實現,取決于密碼應用程序。如果密碼應用程序是通過標準的密碼接口調用密碼模塊,則密碼模塊按標準密碼接口實現,否則按自定義密碼接口實現。
[0024]若群組共享密鑰是一系列對稱密鑰,則群組對稱密鑰的標識信息,包括加密數據中的當前有效的群組對稱密鑰的標識信息以及群組密鑰對象中的群組對稱密鑰的標識信息,可用一個時間有效期和序列號來表示,作為群組對稱密鑰的標識信息,比如:起始時間“:”結束時間“ I ”序列號(引號中的內容原樣保持),其中,起始時間“:”結束時間表示有效期,而序列號表示該有效期內的一個對稱密鑰,序列號用于應對群組對稱密鑰的泄露,比如,若在某個有效期內的群組對稱密鑰被泄露,則在此有效期內可使用另一個序列號不同的對稱密鑰。序列號可用數字表示,其初始值可取O。密碼模塊可從群組密鑰對象或群組偽公鑰中獲得群組標識符,并結合時間有效期和序列號唯一標識和識別一個群組對稱密鑰。
[0025]為了實施本發(fā)明,密碼模塊的密鑰管理接口要實現如下功能:
[0026](I)密鑰生成接口要有額外的參數輸入群組標識符(密碼模塊按標準接口實施時,此密鑰生成接口是自定義的額外接口),或者在密鑰生成接口被調用生成對稱密鑰(對象)時,密碼模塊彈出窗口要求用戶進一步輸入群組標識符(密碼模