王玉瓊
信息是一種資源,也是一種財富。在現(xiàn)代社會中,信息處理和通信技術(shù)日益發(fā)展,保護信息的安全,特別是保護重要信息的安全,越來越受到國內(nèi)外有關(guān)管理者和研究人員的重視。目前,國際互聯(lián)網(wǎng)有各種各樣的安全措施,例如防火墻(FireWall)、網(wǎng)絡(luò)加密、加密狗等。但是,這些都是系統(tǒng)或網(wǎng)站層次的安全設(shè)施。對于廣大用戶來說,更為直接、也更為有效的辦法,就是使用信息加密技術(shù)。如何保證用戶數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中不被截取,從而保證數(shù)據(jù)傳輸?shù)乃矫苄院桶踩砸炎兊梅浅1匾?,已有很多學(xué)者對此作出了研究。
現(xiàn)有利用二叉樹性質(zhì)對數(shù)據(jù)進行加密處理的方案,增加了網(wǎng)絡(luò)傳輸量及系統(tǒng)客戶端和服務(wù)端的開銷,占用了較多的系統(tǒng)資源。
基于樹結(jié)構(gòu)的密鑰加密存儲方法(專利號:CN200810097915.3),屬可信計算技術(shù)領(lǐng)域。其采用了二叉樹分層加密技術(shù),把對許多數(shù)據(jù)加密密鑰的保護轉(zhuǎn)變成了對一個主密鑰的保護,包括二叉樹初始化以及數(shù)據(jù)加密密鑰插入、刪除和讀取四個部分。二叉樹的根節(jié)點代表主密鑰,存放在可信密碼模塊中,其余節(jié)點代表的密鑰存放在外存中,其中,葉節(jié)點代表數(shù)據(jù)加密密鑰;非根節(jié)點存放時總是用上層父節(jié)點對其進行加密,因此,數(shù)據(jù)加密密鑰被使用時必須還原。該方法節(jié)省了可信密碼模塊的存儲空間,又能存儲大量密鑰,可廣泛應(yīng)用于高安全等級的計算機信息系統(tǒng)中,但是,該方法使用范圍較小。
利用二叉樹遍歷方式進行加密、解密方法及裝置(專利號:CN201310329129.2),包括:獲取明文的數(shù)據(jù)序列以及數(shù)據(jù)序列中的N個元素,所述N為大于等于1的整數(shù);根據(jù)所述數(shù)據(jù)序列中元素的個數(shù)N,獲取一棵具有N個節(jié)點的序列二叉樹作為密鑰;根據(jù)預(yù)設(shè)的明文遍歷方式,將所述數(shù)據(jù)序列中的N個元素分別裝載至所述序列二叉樹的N個節(jié)點中;采用與所述明文遍歷方式不同的遍歷方式作為密文遍歷方式;根據(jù)所述密文遍歷方式遍歷所述序列二叉樹,生成加密數(shù)據(jù)序列,以完成明文的加密。在本發(fā)明實例中,根據(jù)密文遍歷方式遍歷所述序列二叉樹,生成加密數(shù)據(jù)序列,以完成明文的加密,簡化了加密過程,增強了安全性,提高了數(shù)據(jù)的加密效率,但若明文內(nèi)容信息量較大,則必須生成較為復(fù)雜的樹信息。
本文提出的加密算法,旨在解決網(wǎng)絡(luò)傳輸加密過程中的資源占用情況,實現(xiàn)簡潔、基于當(dāng)前傳輸協(xié)議的數(shù)據(jù)安全傳輸,不增加任何端口,不需要修改當(dāng)前的防火墻規(guī)則。主要包括數(shù)據(jù)的加密單元、數(shù)據(jù)傳輸接收單元和解密單元。發(fā)送方用二叉樹編碼信息將密鑰加密,通過秘鑰對明文加密,接收方需同時獲取到發(fā)送方提供的二叉樹編碼信息及密鑰信息,才能對密文進行解密。數(shù)據(jù)加密、解密示意圖如圖1所示。
圖1 數(shù)據(jù)加密、解密示意圖
數(shù)據(jù)加密單元:發(fā)送方收到接收方返回的通信確認信息后,生成自己的二叉樹信息同時存儲密鑰信息,并對傳輸?shù)臄?shù)據(jù)進行加密。
傳輸接收單元:發(fā)送方將加密后的數(shù)據(jù)及密鑰、二叉樹遍歷等信息通過不同的方式分別發(fā)送給接收方。接收方需同時獲取到發(fā)送方提供的所有信息(密文、二叉樹遍歷序列、密鑰)才能對數(shù)據(jù)進行解密。
數(shù)據(jù)解密單元:接收方通過獲取到的二叉樹遍歷序列還原生成發(fā)送方生成的二叉樹,解密秘鑰信息,根據(jù)秘鑰對密文進行解密。
數(shù)據(jù)加密解密的流程圖如圖2所示。
圖2 加密算法流程圖
下面結(jié)合具體實例說明本加密算法的步驟:
假定甲為發(fā)送方,乙為接收方;甲方生成自己的二叉樹,并以二叉樹的節(jié)點信息存取秘鑰(本例以字符類型秘鑰為例)。用huffman編碼方法,對所有節(jié)點,若有左孩子,對其指向左孩子的分支編碼為0,若有右孩子,則對其指向右孩子分支編碼
圖3 發(fā)送方生成的二叉樹
(1)生成遍歷序列
中序遍歷序列(左-根-右):DHBIEAFJCG;前序遍歷序列(根-左-右):ABDHEICFJG。
(2)秘鑰存儲
為確保秘鑰的唯一性,我們暫定秘鑰的數(shù)據(jù)信息存儲在樹的葉子節(jié)點上。我們選定節(jié)點GIJH為存儲的秘鑰信息。
(3)秘鑰加密
根據(jù)二叉樹編碼遍歷二叉樹序列將秘鑰(GIJH)轉(zhuǎn)換為對應(yīng)二叉樹編碼G:11,I:010,J:101,H:001。生成秘鑰 1(11010101001)。
(4)明文加密
秘鑰信息(GIJH)轉(zhuǎn)二進制(01100111,01101001,01101010,01101000)存儲,明文轉(zhuǎn)二進制逐次與存儲的秘鑰正向異或;
(明文轉(zhuǎn)二進制) ⊕01100111⊕01101001⊕01101010⊕01101000(結(jié)果轉(zhuǎn)成明文同類型格式)獲取密文。
甲方將生成的二叉樹序列、秘鑰 1、密文通過某種方式發(fā)送給接收方。乙方獲取到甲方發(fā)送的二叉樹序列、秘鑰1、密文進行解密。
(5)二叉樹還原
根據(jù)二叉樹的中序遍歷和后序遍歷序列或中序遍歷和前序遍歷序列可唯一確定一棵二叉樹這一重要特性和甲方發(fā)送的中序遍歷序列DHBIEAFJCG及前序遍歷序列ABDHEICFJG,還原生成甲方生成的二叉樹(如圖3)。為1,一直進行下去,直到編碼完成。假如發(fā)送方任意生成的二叉樹如圖3所示。
(6)秘鑰解密
根據(jù)還原的二叉樹及獲取的秘鑰 1(11010101001)信息,反編碼解密秘鑰信息(GIJH)。
(7)密文解密
根據(jù)邏輯運算(異或)性質(zhì):同一變量與另一變量和其異或值異或等于自身。即:a ⊕ b ⊕ a =b,我們將秘鑰(GIJH)轉(zhuǎn)二進制(01100111,01101001,01101010,01101000)存儲密文轉(zhuǎn)二進制逐次與存儲的秘鑰逆向異或;(密文轉(zhuǎn)二進制)⊕01101000⊕01101010⊕01101001⊕01100111(結(jié)果轉(zhuǎn)成密文同類型格式)獲取明文。
綜上所述,本文中提出的二叉樹加密算法有以下優(yōu)勢:
(1)本加密算法主要適用于對數(shù)據(jù)的加密。發(fā)送方生成任意二叉樹,并分別保存二叉樹的中序及先序序列和秘鑰信息,沒有將密文數(shù)據(jù)直接保存,接收方需同時獲取到該序列、秘鑰方可進行解密。其中運用邏輯異或運算的形式對數(shù)據(jù)進行加密解密操作。該方法能夠快捷、高效地實現(xiàn)數(shù)據(jù)的加密解密。
(2)本加密解密方法引入二叉樹與邏輯異或運算結(jié)合的形式,數(shù)據(jù)更不易被破解,安全性更高,是本專利的核心方法及關(guān)鍵點,應(yīng)予以保護。
[1]彭楚鈞.關(guān)于電子商務(wù)安全解決方案的探討[J].湖南廣播電視大學(xué)學(xué)報,2009(3):54-56.
[2]張曉玲,黎蔚,劉欣亮,等.數(shù)據(jù)結(jié)構(gòu)的實例教學(xué)——二叉樹在信息加密中的應(yīng)用[J].電腦知識與技術(shù)(學(xué)術(shù)交流),2007(07):295-296.
[3]董恩春,江國和.二叉樹與 RSA相結(jié)合進行數(shù)據(jù)加密及其在數(shù)據(jù)傳輸中的應(yīng)用[J].科學(xué)技術(shù)與工程,2007(6):1213-1214.
[4]陳偉,付宇浩,秦科.基于二叉樹的加密算法[J].實驗科學(xué)與技術(shù),2006(12):81-83.