數(shù)字圖書的加密方法

隨著網(wǎng)絡(luò)和信息技術(shù)的發(fā)展,數(shù)字圖書館必將給讀者和用戶帶來極大的方便。然而,數(shù)字圖書館建設(shè)中數(shù)字圖書的安全存儲也將面臨著一種挑戰(zhàn)。為此,我們需要對數(shù)字圖書進(jìn)行加密。

一、數(shù)字圖書對稱加密措施

目前,常見的加密技術(shù)可以分為兩類:非對稱加密技術(shù)和對稱加密技術(shù)。非對稱加密技術(shù)又稱為公鑰加密技術(shù)。非對稱加密技術(shù)的核心是非對稱加密算法,而這些算法的安全性主要是基于密碼單向函數(shù)和數(shù)學(xué)困難問題。在非對稱加密算法中,使用的加密密鑰和解密密鑰不同。通常,由加密密鑰無法推出解密密鑰。比較經(jīng)典的非對稱加密算法主要包括基于大數(shù)分解困難問題的RSA算法,基于離散對數(shù)困難問題的EIGmal加密算法和基于雙線性對的加密算法。然而,這些加密和解密算法需要冪方運(yùn)算、模數(shù)運(yùn)算或雙線性對運(yùn)算,故相對于對稱加密算法而言,他們的計(jì)算速度較慢。特別是對海量數(shù)字圖書進(jìn)行加密時(shí),這種非對稱加密算法是
不可取的。因此,對于數(shù)字圖書而言,利用對稱加密算法進(jìn)行加密是一種理想的選擇。

與非對稱加密算法不同的是,對稱加密算法使用的加密密鑰和解密密鑰相同或者等價(jià)。對稱加密算法主要包括三類,即DES、IDEA和AES。目前,使用最為廣泛和流行的是DES。DES由美國IBM公司研制,其技術(shù)和應(yīng)用也非常成熟。IDEA是一種設(shè)計(jì)比較成功的對稱加密算法,但其目前應(yīng)用并不廣泛。AES以Rigndael算法為核心,采取的是寬軌跡策略,具備抵抗差分密碼分析及線性密碼分析的能力。其比DES快,更為安全,其密
鑰長度具有128比特、192比特和256比特三種選擇。重要的是,對于AES,目前還沒有有效的攻擊手段和破解方法。因此,建議利用AES對海量的數(shù)字圖書進(jìn)行加密,并將數(shù)字圖書的密文保存到數(shù)字圖書館的存儲設(shè)備中。

對稱加密算法的安全性主要依賴于加密密鑰(解密密鑰)的安全性。一旦加密密鑰遭到泄露,則密鑰獲得者可以根據(jù)加密密鑰解密數(shù)字圖書的密文,從而獲得數(shù)字圖書的原文。因此,從某種意義上講,數(shù)字圖書的安全性,主要依賴于加密密鑰的安全性。因此,需要加強(qiáng)對數(shù)字圖書加密密鑰的安全保管。同時(shí),需要注意的是,對于數(shù)以百萬計(jì)的海量數(shù)字圖書,如果使用同一個(gè)加密密鑰進(jìn)行對稱加密,則在某種情況下會具有潛在威脅。比如,若這一加密密鑰被某人非法獲取或破解,則他(她)可以解密所有的數(shù)字圖書,因此,為保證數(shù)字圖書對稱加密更為安全,建議對不同的數(shù)字圖書采用不同的加密密鑰進(jìn)行加密,從而使數(shù)字圖書的加密措施更為安全。這是因?yàn)椋词挂槐緮?shù)字圖書的加密密鑰遭到泄露,但其他數(shù)字圖書對應(yīng)的加密密鑰仍然安全。即盡量避免加密密鑰的重復(fù)使用。然而,我們面臨著一個(gè)問題,如果每本圖書都具有不同的加密密鑰,則對于數(shù)以百萬計(jì)的海量數(shù)字圖書,需要設(shè)置數(shù)以百萬計(jì)的加密密鑰。對于如此龐大的密鑰量,如何進(jìn)行管理,是一個(gè)需要解決的問題。

二、數(shù)字圖書加密密鑰的管理和加密措施

為更加安全地對數(shù)字圖書進(jìn)行加密,我們除了選用AES加密算法外,希望每一本數(shù)字圖書都使用不同的對稱加密密鑰進(jìn)行加密。如何針對不同數(shù)字圖書,安全地產(chǎn)生不同的數(shù)字圖書加密密鑰,如何保存這些密鑰是本節(jié)討論的主要內(nèi)容。在給出這些密鑰管理措施之前,需要先給出一些參數(shù)。

假定H:{O,1)’_+<0,1}]為一個(gè)安全的密碼單向hash函數(shù),其將任意長的二進(jìn)制串映為長度為l的二進(jìn)制串。在這里,l可以取128、192和256三種選擇。數(shù)字圖書館的管理者隨機(jī)選取一個(gè)長度為 d的二進(jìn)制串Seed,d可以取1024,或者更長的Seed作為所有數(shù)字圖書的密鑰種子,用于為所有的數(shù)字圖書產(chǎn)生加密密鑰。在這里,需要注意的是,Seed應(yīng)該由數(shù)字圖書館的管理者采取門限措施予以安全保存。

現(xiàn)在,對任何一本數(shù)字圖書Booki,為對其產(chǎn)生加密密鑰,數(shù)字圖書館的管理者計(jì)算:

booki_key=H (SeedllbookLJnformation)

并將bookLkey作為book,的加密密 鑰。在這里,bookLinformation表示數(shù)字圖書Book,的簡要代表信息,其主要包括圖書的作者、出版商、出版日期、書號等信息,而符號“II’壤示二進(jìn)制串的連接。由于hash函數(shù)具有抗碰撞性和均勻分布性,故對不同的book.information,將生成不同的bookLkey。最終,將booki_key作為數(shù)字圖書booki的加密密鑰,并用AES算法對book,進(jìn)行加密得到Booki的密文:

CipherrAES (Bookj, bookLkey)

將相應(yīng)的密文Cipheri保存在數(shù)字圖書館的存儲設(shè)備上,從而保證數(shù)字圖書的安全性。這樣,結(jié)合上一節(jié)的內(nèi)容,圖1給出數(shù)字圖書的一個(gè)加密方案。

1

從圖1可以看出,每本數(shù)字圖書Booki所使用的加密密鑰booki_key各不相同,故每本數(shù)字圖書加密后產(chǎn)生的密文Cipher,也各不相同。

雖然加密密鑰booki_key各不相同,但數(shù)字圖書館的管理者無需存儲這些加密密鑰。這是因?yàn)?,對于任何一本?shù)字圖書Booki,數(shù)字圖書館的管理者只需計(jì)算:

bookLkey=H (SeedllbookLinformation)

便可獲得對應(yīng)圖書的加密密鑰。因此,對于管理者,其只需秘密的存儲密鑰種子Seed即可。

當(dāng)用戶需要閱讀數(shù)字圖書的原文Booki時(shí),數(shù)字圖書館管理者利用密鑰種子Seed和hash函數(shù)H計(jì)算出的加密密鑰booki_key,并利用AES解密算法還原數(shù)字圖書密文C ipheri對應(yīng)的原文,即計(jì)算:

Booki=AES-i (Cipher, bookkey)

在上式中,AES-表示與AES加密算法對應(yīng)的解密算法??梢酝ㄟ^圖2描述Cipheri的解密過程。

1

小知識之Hash函數(shù)

Hash,一般翻譯做"散列",也有直接音譯為"哈希"的,就是把任意長度的輸入(又叫做預(yù)映射, pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。