一種面向群組的密碼系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于信息安全領(lǐng)域,特別是一種適合于群組成員之間交互信息加密和解密的密碼系統(tǒng)。
【背景技術(shù)】
[0002]人們常常有向群組成員發(fā)送消息的需求。許多通信軟件支持這種群組消息發(fā)送功能,比如,許多電子郵件系統(tǒng)支持通過郵件組向特定用戶群發(fā)送電子郵件:一個電子郵件組地址被分配給一個用戶組,用戶組中每個用戶的電子郵箱地址被關(guān)聯(lián)到這個郵件組地址,當(dāng)一個用戶向郵件組發(fā)送郵件時,郵件服務(wù)器會將發(fā)送到郵件組的郵件分發(fā)到郵件組中每個用戶的郵件帳戶,使得郵件組中的每個人都能收到此郵件;再比如,向QQ群發(fā)送消息:QQ群中的任一個人向QQ群中發(fā)送一條消息,群中的任何人都能收到此消息,這是因為雖然每個QQ用戶有自己的QQ帳戶,當(dāng)一個用戶加入一個QQ群后,他本人的QQ帳戶就同QQ群帳戶關(guān)聯(lián)了,發(fā)送到QQ群帳戶的消息被QQ即時通信系統(tǒng)分發(fā)到了群中每個用戶的QQ帳戶,從而使得QQ群中每個用戶都能收到消息。
[0003]除了向群組用戶發(fā)送消息,人們還有向群組用戶發(fā)送加密消息的需求。假如消息通信系統(tǒng)或工具支持加密,那么,一種簡單的方案是讓群組用戶共享一個密鑰(對稱密鑰)或一對密鑰(非對稱密鑰),當(dāng)群組中的一個用戶向群組通信地址發(fā)送加密消息時,群組中的每個用戶都能解密加密消息。比如,目前的許多電子郵件客戶端支持?jǐn)?shù)字證書公鑰加密,對此可以針對電子郵件組地址簽發(fā)一張數(shù)字證書,郵件組中的每個成員都通過一定的安全渠道獲得此證書的私鑰,然后將此帶私鑰的數(shù)字證書安裝、配置到郵件客戶端的證書庫中,這樣郵件組中的每個用戶都能發(fā)送加密郵件,以及解密發(fā)送到郵件組的加密郵件(發(fā)送加密郵件時,郵件客戶端是根據(jù)接收郵件的地址選擇用于加密的數(shù)字證書及公鑰的;接收、讀取加密郵件時,郵件客戶端是根據(jù)加密郵件中的公鑰標(biāo)識信息找到對應(yīng)的加密數(shù)字證書及私鑰的)。若即時通信工具支持基于對稱密鑰的加密消息發(fā)送,則群組中每個用戶通過安全途徑獲取用于群組消息加密的對稱密鑰,并安裝到通信工具。但是,這種簡單共享密鑰方案存在一個問題:由于群組用戶經(jīng)常變更,因此,群組需要每隔一段時間(比如一個月、一周)變更共享密鑰(對稱或非對稱密鑰),這時,要求群組用戶每隔一段時間去獲取共享密鑰并進(jìn)行共享密鑰安裝配置將是一件非常麻煩的事情,這將影響用戶對群組消息加密的使用。本發(fā)明就是要解決此冋題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是提出一種適合于在群組成員之間進(jìn)行加密數(shù)據(jù)交換以及便于定期更新共享密鑰的面向群組的密碼系統(tǒng)。
[0005]為了實現(xiàn)上述目的,本發(fā)明所采用的技術(shù)方案是:
[0006]一種面向群組的密碼系統(tǒng),所述系統(tǒng)包括密鑰服務(wù)系統(tǒng)、密碼模塊以及群組管理系統(tǒng),其中,
[0007]密鑰服務(wù)系統(tǒng):一個為群組成員在線生成和恢復(fù)群組秘密密鑰的系統(tǒng);所述群組秘密密鑰是在群組成員中共享、用于數(shù)據(jù)加密和解密的秘密密鑰,所述群組秘密密鑰包括對稱密鑰(群組對稱密鑰)和公開密鑰的私鑰(群組私鑰);(由于密鑰更新和/或應(yīng)對密鑰泄露的需要)一個群組在不同時期具有不同的群組秘密密鑰(比如,一個群組秘密密鑰每周更新一次);在出現(xiàn)群組秘密密鑰泄露時,一個群組的秘密密鑰通過密鑰更新在同一個時期出現(xiàn)不同的群組秘密密鑰;
[0008]密碼模塊:一個運行在用戶計算設(shè)備中提供密碼功能的軟件組件或軟硬件相結(jié)合的組件;所述密碼功能包括密鑰管理和密碼運算(比如,密鑰的生成、導(dǎo)入、導(dǎo)出、刪除,對數(shù)據(jù)的加密和解密密碼運算);所述密碼模塊維護(hù)有群組密鑰對象,包括永久性和臨時性的群組密鑰對象;密碼模塊中的一個群組密鑰對象對應(yīng)一個群組,并保存有群組的一系列在不同時期有效的群組秘密密鑰,以及每個在不同時期有效的群組秘密密鑰的標(biāo)識信息;所述群組秘密密鑰的標(biāo)識信息用于在群組的一系列秘密密鑰中標(biāo)識和區(qū)分一個秘密密鑰;所述群組密鑰對象在初始創(chuàng)建時沒有群組秘密密鑰(即初始創(chuàng)建的群組密鑰對象是一個空的群組密鑰對象);密碼模塊按通常標(biāo)識對稱密鑰或非對稱密鑰的密鑰對象的方式標(biāo)識群組密鑰對象,群組密鑰對象是被標(biāo)識為對稱密鑰對象還是非對稱密鑰對象取決于群組密鑰對象中存放的秘密密鑰是對稱密鑰還是非對稱密鑰;密碼應(yīng)用程序按通常使用(對稱或非對稱)密鑰對象的方式使用群組密鑰對象,即密碼應(yīng)用程序不知道也不關(guān)心使用的群組密鑰對象是通常的、非群組的密鑰對象還是一個群組密鑰對象(比如,若密碼模塊按Windows CSP或PKCS#11接口實現(xiàn),則密碼應(yīng)用程序按通常使用Windows CSP或PKCS#11的對稱或非對稱密鑰對象的方式使用群組密鑰對象);所述密碼應(yīng)用程序是運行在用戶計算設(shè)備中并使用密碼模塊中的群組密鑰對象進(jìn)行數(shù)據(jù)加密和解密的應(yīng)用程序(若群組密鑰對象中存放的是群組私鑰,則僅進(jìn)行數(shù)據(jù)解密密碼運算);
[0009]群組管理系統(tǒng):一個用于用戶群組(簡稱群組)管理包括群組創(chuàng)建、群組維護(hù)和群組刪除的系統(tǒng);所述群組維護(hù)包括群組成員用戶的加入和退出管理;所述群組管理系統(tǒng)管理的每個群組都有一個標(biāo)識符,稱為群組標(biāo)識符或群組ID ;所述群組標(biāo)識符是一個唯一標(biāo)識群組的字符串(如QQ群組的QQ號碼、一個郵箱組的郵件地址等);當(dāng)一個用戶從密鑰服務(wù)系統(tǒng)在線獲取一個群組秘密密鑰時,所述群組管理系統(tǒng)負(fù)責(zé)在線鑒別用戶的身份,確定用戶是群組成員,并在身份鑒別和群組成員確認(rèn)通過后為用戶簽發(fā)證明用戶是群組成員的群組令牌(group token)。
[0010]所述密碼模塊中的群組密鑰對象由密碼應(yīng)用程序通過調(diào)用密碼模塊的密鑰管理接口生成,或者由用戶通過使用密鑰管理工具調(diào)用密碼模塊的密鑰管理接口生成。
[0011]若所述密碼模塊的群組密鑰對象中保存的群組秘密密鑰是對稱密鑰,則群組密鑰對象中保存有群組標(biāo)識符(用于指示群組密鑰對象中的一系列秘密密鑰所屬的群組);
[0012]若所述密碼模塊的群組密鑰對象中保存的群組秘密密鑰是公開密鑰對的私鑰,且密碼模塊使用群組公鑰對數(shù)據(jù)加密后放入到加密數(shù)據(jù)中的群組秘密密鑰的標(biāo)識信息中不包含有群組標(biāo)識符,則群組密鑰對象中保存有群組標(biāo)識符(同樣用于指示群組密鑰對象中的秘密密鑰所屬的群組);
[0013]若所述密碼模塊的群組密鑰對象中保存的群組秘密密鑰是公開密鑰對的私鑰,且群組密鑰對象中沒有保存群組標(biāo)識符,則密碼模塊使用群組公鑰對數(shù)據(jù)加密后放入到加密數(shù)據(jù)中的群組秘密密鑰的標(biāo)識信息中包含有群組標(biāo)識符;
[0014]若群組密鑰對象中保存有群組標(biāo)識符,則群組密鑰對象中保存的群組標(biāo)識符在群組密鑰對象生成時由密碼應(yīng)用程序輸入或者由用戶輸入。
[0015]若所述群組秘密密鑰是公開密鑰對的私鑰,則每個群組對應(yīng)有一個群組偽公鑰(或稱為偽群組公鑰);所述群組偽公鑰具有普通公鑰一樣的密鑰數(shù)據(jù)結(jié)構(gòu),但其中的數(shù)據(jù)是群組標(biāo)識符和使用群組公鑰進(jìn)行密碼運算時所需的參數(shù)(具體需要什么參數(shù)取有于群組秘密密鑰所對應(yīng)的公開密鑰密碼算法);群組偽公鑰所對應(yīng)或標(biāo)識的公開密鑰密碼算法的類型與群組公開密鑰對的公開密鑰密碼算法的類型不同或者相同;群組偽公鑰的密鑰數(shù)據(jù)中存放有預(yù)先約定的特征標(biāo)志,用于區(qū)分普通公鑰(如RSA公鑰)和群組偽公鑰(如偽RSA公鑰)。
[0016]當(dāng)密碼應(yīng)用程序通過密碼模塊的接口使用公鑰進(jìn)行數(shù)據(jù)加密時,密碼模塊通過檢查公鑰中是否有群組偽公鑰的特征標(biāo)志判斷密碼應(yīng)用程序使用的公鑰是普通公鑰(如RSA公鑰)還是群組偽公鑰(如偽RSA公鑰),若是普通公鑰,則密碼模塊按使用普通公鑰的方式進(jìn)行數(shù)據(jù)加密;若是群組偽公鑰,則密碼模塊使用群組偽公鑰中的群組標(biāo)識符所指的群組的當(dāng)前有效的群組公鑰進(jìn)行數(shù)據(jù)加密;若在密碼模塊本地?zé)o法得到群組的當(dāng)前有效的群組公鑰,則密碼模塊利用