一種基於樹結構的密鑰加密存儲方法
2023-12-01 21:39:46 1
專利名稱:一種基於樹結構的密鑰加密存儲方法
技術領域:
用於對稱密鑰加密存儲的方法屬於可信計算技術領域,是信息安全的核心技術之一。
(二)
背景技術:
在可信計算領域中,對稱密鑰的安全存儲是一個關鍵問題,因為如果對稱密鑰一旦洩密, 則相關密文就不安全。
目前,普遍採用的存儲方法是把對稱密鑰分別存儲到軟盤或快閃記憶體中,由用戶隨身攜帶或 存放在一個安全的地方。但是,這樣做很不方便。 一是這種方式需要大量的軟盤或快閃記憶體;二 是這種方式需要用戶總是守在計算機旁邊;三是這種內外交互的方式降低了應用程式的運行 速度。
隨著密碼技術在計算機系統和通信系統中的大量使用,應用程式總是頻繁地在做加密、 解密、數字籤名或身份驗證運算。因此,傳統的對稱密鑰存儲方法已不適應新時代的要求。 另一方面,可信計算技術為在硬碟、快閃記憶體等外存中大量實時存儲對稱密鑰提供了可能。
(三)
發明內容
在可信計算中,經常需要用到密碼體制,尤其是對稱密碼體制。其特點是運行速度快。 當加密、解密在同一臺計算機中進行時,對稱密鑰不需要傳遞。但需要存儲在硬碟或快閃記憶體(介 質)中,以便應用系統對其進行實時訪問。
為了防止對稱密鑰洩密,在存儲到介質前,應先對其進行加密。相應地,當對稱密鑰被 從介質讀取到內存時,應對其進行解密。
本發明實現了對稱密鑰在應用信息系統中的安全、快速、方便訪問,為構造大型、複雜、 安全的應用信息系統提供了保障。在電子商務、電子政務和電子金融等信息系統中有著廣泛 而重要的應用。
3.1幾個基本概念
二叉樹電腦程式中的一種數據結構,由節點構成。有唯一的根節點,每個節點最多 有兩個子節點。沒有子節點的節點稱為葉節點。
二叉樹猶如一棵倒長的分層次的樹,根節點可視為零層,其次是第一層、第二層等等。 顯然,第一層最多有2個節點,第二層最多有4個節點,…,第/ 層最多有2^個節點。整個 樹最多有2"i-l個節點。可信密碼模塊可信平臺控制模塊中的一個子模塊,可以當作硬體的一部分,用來產生 密鑰和存儲有限密鑰,由於採用物理保護方式,它們不可能被外界竊取和非法獲得。簡稱為 TCM(Tmsted Cipher Module)。由於可信密碼模塊存儲空間很小,因此,只能存儲少數非常重 要的密鑰。
數據加密密鑰用來加密數據的對稱密鑰。對應於二叉樹中的中間節點。 密鑰加密密鑰用來加密密鑰的對稱密鑰。對應於二叉樹中的根節點。
系統主密鑰可信密碼模塊產生的一個對稱密鑰,並存儲在可信密碼模塊中,用來加密
其它的對稱密鑰,它位於二叉樹根節點上。簡稱SMK(System Main Key)。
顯然,系統主密鑰也是一個密鑰加密密鑰。
密鑰路徑從葉節點到根節點的一串節點,可根據節點中的父指針依次往上追溯。
設symCrypt為一個對稱算法,加密調用形式為symQypt(plain, key, 0),返回加密後的
plain值,為密文;解密調用形式為symCrypt(cipher, key, 1),返回解密後的cipher值,為明文。
令'—'表示把右邊的值賦給左邊的變量。 令Null表示空值。
3.2 二叉樹的初始化
定義一個含5個域的結構體類型BiTreeNode《keyV, keyN, parent, 1Child, rChild}。 其中,keyV用來存放對稱密鑰值;keyN用來存放對稱密鑰編號,用於應用程式訪問相應 的數據加密密鑰,從1開始編號,若其值為0,則表示keyV為密鑰加密密鑰;parent用來存 放節點的父指針;1Child用來存放左孩子指針;rChild用來存放右孩子指針。
用節點變量名+'.'+域名來標識節點的域。例如,aSMK.keyN標識根節點的對稱密鑰編 號(見下)。
(1) 開闢一個類型為BiTreeNode的存儲單元aSMK (該單元作為二叉樹的根節點),
(2) 隨機生成用於symCrypt的主密鑰,並存入TCM的永久單元SMK中, 置aSMK.keyV <~ Null,
(3) 置aSMK.parent仨Null、 aSMK.lChild<~ Null、 aSMK,rChild <~ Null, 置aSMK.keyN <~ 0,
(4) 把該樹結構存入到一個永久磁碟文件中。
注意,該文件會隨著二叉樹的長大而長大。應用程式每次運行時,調入二叉樹到內存, 並調整有關值。結束運行前,把二叉樹重新寫入磁碟文件中。
磁碟文件中的二叉樹,其根節點的密鑰值為Null,其餘節點(包括葉節點)的密鑰值都 採用symCrypt和父密鑰加密後存放。這樣,把對許多數據加密密鑰的保護轉變成了對SMK 的保護。
二叉樹調入內存後,根節點為aSMK,根節點的密鑰值應該置為SMK,其餘節點的指針值可能也要根據內存分布情況做一定調整。
3.3數據加密密鑰插入
本部分是把一個用於加密數據的對稱密鑰加入到二叉樹中。 假設二叉樹已被應用程式調入內存,根節點為aSMK。 輸入明文形式的對稱密鑰值iKeyV,對稱密鑰編號iKeyN。 輸出對稱密鑰iKeyN的節點地址。
(1) 在內存中開闢一個BiTreeNode類型的存儲單元newLeaf,
(2) 置newLeaf.keyN <~ iKeyN, newLeaf.lChiH Null、 newLeaf.rChild <~ Null,
(3) 按縱向優先搜索二叉樹aSMK, 若找到一個中間節點mNode有空指針,那麼
(3.1) 根據mNode的密鑰路徑,利用SMK分層解密路徑上的各密鑰, 令pKey <~解密的mNode.keyV,
(3.2) 若mNode.lChild = Null,貝lj mNode,lChild <~ newLeaf的地址, 否則mNode.rChild <~ newLeaf的地址,
(3.3) 令newLeaf.parent <~ mNode的地址,
(3.4) 做newLeaf.keyV <~ symCrypt(iKeyV, pKey, 0),
(4) 如果未找到任何中間節點有空指針,則設最左邊的葉節點為dlNode,
(4.1) 開闢另一個BiTreeNode類型的存儲單元oldLeaf,
令dlNode.lChild <~ oldLeaf的地址,dlNode.rChild <~ newLeaf的地址, 令oldLeaf.parent — dlNode的地址,newLeaf.parent仨dlNode的地址, 置oldLeaf.lCMd <~ Null , oldLeaf.rCMd <~ Null , 置oldLeaf.keyN — dlNode.keyN, dlNode.keyN仨0,
(4.2) 根據dlNode的密鑰路徑,利用SMK分層次解密路徑上的各密鑰, 令pKey <~角牟密的dlNode.parent.keyV,
j故oldKey <~ symCrypt(dlNode.keyV, pKey, 1), 隨機生成一個用於symCrypt的對稱密鑰rKey, 做oldLeaf.keyV仨symCrypt(oldKey, rKey, 0), 做newLeaf.keyV <~ symCrypt(iKeyV, rKey, 0), 做dlNode.keyV <~ symCrypt(rKey, pKey, 0),
(5) 返回newLeaf的地址。
3.4數據加密密鑰刪除
本部分是從二叉樹中刪除一個葉節點,該葉節點存放有用於加密數據的對稱密鑰。 假設二叉樹已被應用程式調入內存,根節點為aSMK。 輸入對稱密鑰編號dKeyN。輸出'刪除成功'或'未找到相應編號的密鑰'。
(1) 按縱向優先搜索二叉樹aSMK, 若找到一個葉節點有dNode. keyN = dKeyN,那麼
(1.1) 如果dNode.parenUChild = dNode的地址, 貝廿dNode.parentlChild = Null,
否則dNode.parent.rChild = Null;
(1.2) 釋放dNode的內存空間,
(1.3) 返回'刪除成功',
(2) 否則,返回'未找到相應編號的密鑰'。
3.5數據加密密鑰讀取
本部分是從二叉樹的葉節點中找到相應的對稱密鑰編號,然後,把密鑰值解密成明文形 式並返回。
假設二叉樹已被應用程式調入內存,根節點為aSMK。 輸入對稱密鑰編號fKeyN。
輸出解密後的密鑰值或'未找到相應編號的密鑰'。
(1) 按縱向優先搜索二義樹aSMK,
若找到個葉節點有fNode.keyN = fKeyN,那麼
(1.1) 根據Wode的密鑰路徑,利用SMK分層次解密路徑上的各密鑰,
(1.2) 令pKey仨角早密的fNode.parent.keyV,
(1.3) 做plainKey仨symCrypt(fNode.keyV' pKey, 1), (1.3)返回plainKey,
(2) 否則,返回'未找到相應編號的密鑰'。
3.6優點和積極效果 3.6.1安全性較高
採用了可信計算技術,主密鑰SMK存儲在可信密碼模塊中,防止了任何人的偷竊和非法 訪問。
3.6.2效率較高
採用了二叉樹分層加密技術,把對許多數據加密密鑰的保護轉變成了對一個SMK的保 護,效率提高較明顯。
3.6.3運算速度較快
應用程式啟動後,二叉樹PJ調入內存,對某個數據加密密鑰的訪問直接從內存而不是從 外存讀取,這樣,極大地提高了密鑰的訪問速度。
具體實施例方式
本發明闡述了一種高效的密鑰保護與存儲方法,它結合了可信計算技術和二叉樹存儲技 術,包括4個部分二叉樹初始化、插入一個數據加密密鑰、刪除一個數據加密密鑰、讀取 一個數據加密密鑰。
這4部分可以作為子程序分別用邏輯電路晶片或程序語言來實現,同時,為其它應用程 序提供調用接口,包括子程序名、調用參數個數、輸入參數和返回參數等。
權利要求
1、一種基於樹結構的密鑰加密存儲方法,由二叉樹初始化、數據加密密鑰插入、數據加密密鑰刪除和數據加密密鑰讀取四個部分組成,把對許多數據加密密鑰的保護轉變成了對一個主密鑰的保護,主密鑰存儲在可信密碼模塊中,其餘密鑰存儲在外存中,其特徵在於·二叉樹初始化部分採用了下列步驟定義結構體BiTreeNode為{keyV,keyN,parent,lChild,rChild},做(1)開闢一個類型為BiTreeNode的存儲單元aSMK,(2)隨機生成一個主密鑰,存入TCM的單元SMK中,置aSMK.keyV←Null,(3)置aSMK.parent、aSMK.lChild、aSMK.rChild←Null,置aSMK.keyN←0,(4)把該樹結構存入到一個永久磁碟文件中;·數據加密密鑰插入部分採用了下列步驟輸入明文形式的對稱密鑰值iKeyV、對稱密鑰編號iKeyN,做(1)在內存中開闢一個BiTreeNode類型的存儲單元newLeaf,(2)置newLeaf.keyN←iKeyN,newLeaf.lChild、newLeaf.rChild ←Null,(3)按縱向優先搜索二叉樹aSMK,若找到一個中間節點mNode有空指針,那麼(3.1)根據mNode的密鑰路徑,利用SMK分層解密路徑上的各密鑰,令pKey←解密的mNode.keyV,(3.2)若mNode.lChild=Null,則mNode.lChild←newLeaf的地址,否則mNode.rChild←newLeaf的地址,(3.3)令newLeaf.parent←mNode的地址,(3.4)做newLeaf.keyV←symCrypt(iKeyV,pKey,0),(4)如果未找到任何中間節點有空指針,則設最左邊的葉節點為dlNode,(4.1)開闢另一個BiTreeNode類型的存儲單元oldLeaf,令dlNode.lChild←oldLeaf的地址,dlNode.rChild←newLeaf的地址,令oldLeaf.parent←dlNode的地址,newLeaf.parent←dlNode的地址,置oldLeaf.lChild←Null,oldLeaf.rChild←Null,置oldLeaf.keyN←dlNode.keyN,dlNode.keyN←0,(4.2)根據dlNode的密鑰路徑,利用SMK分層次解密路徑上的各密鑰,令pKey←解密的dlNode.parent.keyV,做oldKey←symCrypt(dlNode.keyV,pKey,1),隨機生成一個用於symCrypt的對稱密鑰rKey,做oldLeaf.keyV←symCrypt(oldKey,rKey,0),做newLeaf.keyV←symCrypt(iKeyV,rKey,0),做dlNode.keyV←symCrypt(rKey,pKey,0),(5)返回newLeaf的地址;·數據加密密鑰刪除部分採用了下列步驟輸入對稱密鑰編號dKeyN,做(1)按縱向優先搜索二叉樹aSMK,若找到一個葉節點有dNode.keyN=dKeyN,那麼(1.1)如果dNode.parent.lChild=dNode的地址,則dNode.parent.lChild=Null,否則dNode.parent.rChild=Null,(1.2)釋放dNode的內存空間,(1.3)返回『刪除成功』,(2)否則,返回『未找到相應編號的密鑰』;·數據加密密鑰讀取部分採用了下列步驟輸入對稱密鑰編號fKeyN,做(1)按縱向優先搜索二叉樹aSMK,若找到一個葉節點有fNode.keyN=fKeyN,那麼(1.1)根據fNode的密鑰路徑,利用SMK分層次解密路徑上的各密鑰,(1.2)令pKey←解密的fNode.parent.keyV,(1.3)做plainKey←symCrypt(fNode.keyV,pKey,1),(1.3)返回plainKey,(2)否則,返回『未找到相應編號的密鑰』。
全文摘要
一種基於樹結構的密鑰加密存儲方法,屬可信計算技術領域;其採用了二叉樹分層加密技術,把對許多數據加密密鑰的保護轉變成了對一個主密鑰的保護,包括二叉樹初始化以及數據加密密鑰插入、刪除和讀取四個部分;二叉樹的根節點代表主密鑰,存放在可信密碼模塊中,其餘節點代表的密鑰存放在外存中,其中,葉節點代表數據加密密鑰;非根節點存放時總是用上層父節點對其進行加密,因此,數據加密密鑰被使用時必須還原;該方法節省了可信密碼模塊的存儲空間,又能存儲大量密鑰,可廣泛應用於高安全等級的計算機信息系統中。
文檔編號G06F21/00GK101582760SQ20081009791
公開日2009年11月18日 申請日期2008年5月16日 優先權日2008年5月16日
發明者劉威鵬, 莊俊璽, 興 張, 沈昌祥, 俊 胡 申請人:中國科學院研究生院