□文/楊清蘭
(鄭州輕工業(yè)學(xué)院圖書館 河南·鄭州)
數(shù)字圖書館建設(shè)是圖書館事業(yè)發(fā)展的一個(gè)重要舉措。隨著網(wǎng)絡(luò)和信息技術(shù)的發(fā)展,數(shù)字圖書館必將給讀者和用戶帶來極大的方便。然而,數(shù)字圖書館建設(shè)中數(shù)字圖書的安全存儲(chǔ)也將面臨著一種挑戰(zhàn)。數(shù)字圖書的安全存儲(chǔ)直接涉及到數(shù)字圖書的出版者、作者和讀者的版權(quán)和利益。為保證數(shù)字圖書館的安全,需要對(duì)數(shù)字圖書館中所存儲(chǔ)的數(shù)字圖書進(jìn)行加密。然而,在未來的數(shù)字圖書館中,將存儲(chǔ)海量的數(shù)字圖書。如何對(duì)如此巨大的數(shù)字資源進(jìn)行快速加密和解密,以及如何對(duì)數(shù)字圖書的加密密鑰進(jìn)行管理,是一個(gè)需要面臨的重要問題。本文給出數(shù)字圖書的對(duì)稱加密措施,并利用Hash 函數(shù)和數(shù)字圖書密鑰種子為不同的數(shù)字圖書產(chǎn)生不同的加密密鑰,從而使得數(shù)字圖書的加密方案更為安全。而且,為保證數(shù)字圖書密鑰種子的安全性,本文利用門限方案對(duì)用于數(shù)字圖書加密的密鑰種子進(jìn)行門限分割,使得密鑰種子的存儲(chǔ)和恢復(fù)具有更好的安全性。在對(duì)稱加密下,可以快速實(shí)現(xiàn)對(duì)數(shù)字圖書的加密和解密。同時(shí),門限秘密分割方案使得數(shù)字圖書的加密密鑰管理更加安全。這一新措施將有利于數(shù)字圖書館數(shù)字圖書的安全保存。
本文安排如下:在第2 節(jié),給出數(shù)字圖書的對(duì)稱加密措施;在第3 節(jié),給出數(shù)字圖書的加密密鑰管理和加密措施;在第4 節(jié),給出結(jié)論。
目前,常見的加密技術(shù)可以分為兩類:非對(duì)稱加密技術(shù)和對(duì)稱加密技術(shù)。非對(duì)稱加密技術(shù)又稱為公鑰加密技術(shù)。非對(duì)稱加密技術(shù)的核心是非對(duì)稱加密算法,而這些算法的安全性主要是基于密碼單向函數(shù)和數(shù)學(xué)困難問題。在非對(duì)稱加密算法中,使用的加密密鑰和解密密鑰不同。通常,由加密密鑰無法推出解密密鑰。比較經(jīng)典的非對(duì)稱加密算法主要包括基于大數(shù)分解困難問題的RSA 算法,基于離散對(duì)數(shù)困難問題的ElGmal 加密算法和基于雙線性對(duì)的加密算法。然而,這些加密和解密算法需要冪方運(yùn)算、模數(shù)運(yùn)算或雙線性對(duì)運(yùn)算,故相對(duì)于對(duì)稱加密算法而言,他們的計(jì)算速度較慢。特別是對(duì)海量數(shù)字圖書進(jìn)行加密時(shí),這種非對(duì)稱加密算法是不可取的。因此,對(duì)于數(shù)字圖書而言,利用對(duì)稱加密算法進(jìn)行加密是一種理想的選擇。
與非對(duì)稱加密算法不同的是,對(duì)稱加密算法使用的加密密鑰和解密密鑰相同或者等價(jià)。對(duì)稱加密算法主要包括三類,即DES(Data encryption standard)、IDEA(international data encryption algorithm)和AES(advanced encryption standard)。目前,使用最為廣泛和流行的是DES。DES由美國IBM 公司研制,其技術(shù)和應(yīng)用也非常成熟。但是,據(jù)報(bào)道,1998年5月美國EFF(electronics frontier foundation)宣布,其利用專用的解密機(jī),在56 小時(shí)破譯了56 比特密鑰的DES。而對(duì)于DES,是否對(duì)于長度更長的密鑰也能得到攻破,目前并未報(bào)道。但是,可以肯定,DES 的安全性受到威脅。IDEA 由來學(xué)嘉和J.L.Massey提出,是一種設(shè)計(jì)比較成功的對(duì)稱加密算法,但其目前應(yīng)用并不廣泛。AES 以Rigndael 算法為核心,采取的是寬軌跡策略,具備抵抗差分密碼分析及線性密碼分析的能力。其比DES 快,更為安全,其密鑰長度具有128 比特、192 比特和256 比特三種選擇。重要的是,對(duì)于AES,目前還沒有有效的攻擊手段和破解方法。因此,建議利用AES 對(duì)海量的數(shù)字圖書進(jìn)行加密,并將數(shù)字圖書的密文保存到數(shù)字圖書館的存儲(chǔ)設(shè)備中。
對(duì)稱加密算法的安全性主要依賴于加密密鑰(解密密鑰)的安全性。一旦加密密鑰遭到泄露,則密鑰獲得者可以根據(jù)加密密鑰解密數(shù)字圖書的密文,從而獲得數(shù)字圖書的原文。因此,從某種意義上講,數(shù)字圖書的安全性,主要依賴于加密密鑰的安全性。因此,需要加強(qiáng)對(duì)數(shù)字圖書加密密鑰的安全保管。同時(shí),需要注意的是,對(duì)于數(shù)以百萬計(jì)的海量數(shù)字圖書,如果使用同一個(gè)加密密鑰進(jìn)行對(duì)稱加密,則在某種情況下會(huì)具有潛在威脅。比如,若這一加密密鑰被某人非法獲取或破解,則他(她)可以解密所有的數(shù)字圖書。因此,為保證數(shù)字圖書對(duì)稱加密更為安全,建議對(duì)不同的數(shù)字圖書采用不同的加密密鑰進(jìn)行加密,從而使數(shù)字圖書的加密措施更為安全。這是因?yàn)椋词挂槐緮?shù)字圖書的加密密鑰遭到泄露,但其他數(shù)字圖書對(duì)應(yīng)的加密密鑰仍然安全。即盡量避免加密密鑰的重復(fù)使用。然而,我們面臨著一個(gè)問題,如果每本圖書都具有不同的加密密鑰,則對(duì)于數(shù)以百萬計(jì)的海量數(shù)字圖書,需要設(shè)置數(shù)以百萬計(jì)的加密密鑰。對(duì)于如此龐大的密鑰量,如何進(jìn)行管理,是一個(gè)需要解決的問題。因此,在下一節(jié),我們給出數(shù)字圖書加密密鑰的管理和加密措施。
為更加安全地對(duì)數(shù)字圖書進(jìn)行加密,我們除了選用AES 加密算法外,希望每一本數(shù)字圖書都使用不同的對(duì)稱加密密鑰進(jìn)行加密。如何針對(duì)不同數(shù)字圖書,安全地產(chǎn)生不同的數(shù)字圖書加密密鑰,如何保存這些密鑰是本節(jié)討論的主要內(nèi)容。在給出這些密鑰管理措施之前,需要先給出一些參數(shù)。
假定H∶{0,1}*→{0,1}l為一個(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ù)字圖書館的管理者采取門限措施予以安全保存。這種門限措施,我們放在第4節(jié)予以給出。
現(xiàn)在,對(duì)任何一本數(shù)字圖書Booki,為對(duì)其產(chǎn)生加密密鑰,數(shù)字圖書館的管理者計(jì)算:
booki_key=H(Seed||booki_information)
并將booki_key 作為booki的加密密鑰。在這里,booki_information 表示數(shù)字圖書Booki的簡要代表信息,其主要包括圖書的作者、出版商、出版日期、書號(hào)等信息,而符號(hào)“||”表示二進(jìn)制串的連接。由于hash 函數(shù)具有抗碰撞性和均勻分布性,故對(duì)不同的booki_information,將生成不同的booki_key。最終,將booki_key 作為數(shù)字圖書booki的加密密鑰,并用AES 算法對(duì)booki進(jìn)行加密得到Booki的密文:
Cipheri=AES(Booki,booki_key)
將相應(yīng)的密文Cipheri保存在數(shù)字圖書館的存儲(chǔ)設(shè)備上,從而保證數(shù)字圖書的安全性。這樣,結(jié)合上一節(jié)的內(nèi)容,圖1給出數(shù)字圖書的一個(gè)加密方案。(圖1)
圖1 數(shù)字圖書的加密密鑰產(chǎn)生措施和相應(yīng)的AES加密措施
從圖1可以看出,每本數(shù)字圖書Booki所使用的加密密鑰booki_key 各不相同,故每本數(shù)字圖書加密后產(chǎn)生的密文Cipheri也各不相同。
雖然加密密鑰booki_key 各不相同,但數(shù)字圖書館的管理者無需存儲(chǔ)這些加密密鑰。這是因?yàn)?,?duì)于任何一本數(shù)字圖書Booki,數(shù)字圖書館的管理者只需計(jì)算:
booki_key=H(Seed||booki_information)
便可獲得對(duì)應(yīng)圖書的加密密鑰。因此,對(duì)于管理者,其只需秘密的存儲(chǔ)密鑰種子Seed 即可。
當(dāng)用戶需要閱讀數(shù)字圖書的原文Booki時(shí),數(shù)字圖書館管理者利用密鑰種子Seed 和hash 函數(shù)H 計(jì)算出的加密密鑰booki_key,并利用AES 解密算法還原數(shù)字圖書密文Cipheri對(duì)應(yīng)的原文,即計(jì)算:
Booki=AES-1(Cipheri,booki_key)
在上式中,AES-1表示與AES 加密算法對(duì)應(yīng)的解密算法??梢酝ㄟ^圖2描述Cipheri的解密過程。(圖2)
圖2 數(shù)字圖書密文Cipheri的AES解密過程
由于AES 算法已經(jīng)被密碼學(xué)家證明是安全的,故在已知密文Cipheri但不知道加密密鑰booki_key 的情況下,非法用戶無法解密Ciphteri獲得數(shù)字圖書Booki的原文內(nèi)容。若非法用戶企圖猜測(cè)出booki_key,但由于booki_key 的長度至少為128 比特,這種能夠猜測(cè)出booki_key的概率最多為2-128,這是一個(gè)可以忽略的概率。因此,booki_key 具有安全性,這使得Ciphteri也具有保密性。事實(shí)上,上述的加密措施具有更進(jìn)一步的安全性??梢钥闯觯词筨ooki_key 遭到泄露后,由于H為一個(gè)單向hash 函數(shù),故非法用戶無法由booki_key 和booki_information 獲 得Seed(注意,Seed 是由數(shù)字圖書館管理者秘密保存)。并且,即使booki_key 遭到泄露,由于非法用戶不知道Seed,故其無法計(jì)算Bookj(i≠j)的加密密鑰bookj_key=H(Seed||bookj_information)。也就是說,在booki_key 遭到泄露的情況下,Bookj的加密密鑰仍然安全,非法用戶仍然無法解密Ciphterj而獲得Bookj。
從上面的分析可知,數(shù)字圖書館的管理者只需要對(duì)密鑰種子Seed 安全保存,便可推出任何一個(gè)數(shù)字圖書的加密密鑰(解密密鑰),從而實(shí)現(xiàn)對(duì)任何一本數(shù)字圖書的加密和解密。因此,對(duì)Seed 的安全保存尤為重要。為此,我們采用(k,t)門限秘密分割的方法對(duì)Seed 進(jìn)行秘密分割,將Seed 分割成t 個(gè)部分,每一部分稱為一個(gè)秘密因子,分別放到不同的數(shù)字圖書館t個(gè)不同的主機(jī)上,使得只有同時(shí)獲取k 個(gè)或k 個(gè)以上的主機(jī)秘密因子才能恢復(fù)Seed,而任何少于k 個(gè)秘密因子無法恢復(fù)密鑰種子Seed。數(shù)字圖書館管理者將這t個(gè)秘密因子秘密地放到數(shù)字圖書館t 個(gè)不同的主機(jī)上進(jìn)行保存。稱這種秘密分割方案為(k,t)門限秘密分割方案。下面,我們給出這種方案的實(shí)現(xiàn)。
設(shè)GF(q)是一有限域,其中是一個(gè)安全的大素?cái)?shù)q(如,q 取1024 比特),且q≥t+1。假定Seed 為數(shù)字圖書館管理者在GF(q){0}上隨機(jī)選取的一個(gè)數(shù)(顯然,其等價(jià)為一個(gè)二進(jìn)制串)。另外,數(shù)字圖書館管理者在GF(q){0}上再隨機(jī)選取數(shù)k-1 個(gè)數(shù)a1,a2,…,ak-1,并在GF(q){0}上構(gòu)造一個(gè)k-1 次多項(xiàng)式f(x)=Seed+a1x+a2x2+…+ak-1xk-1(modq)。數(shù)字圖書管理者分別計(jì)算f(1),f(2),…,f(t),稱這t 個(gè)數(shù)為秘密因子。數(shù)字圖書館管理者將(1,f(1)),(2,f(2)),…,(t,f(t)))這t 個(gè)數(shù)對(duì)分別分配給主機(jī)M1,M2,…,Mt秘密保存,并銷毀Seed,a1,a2,…,at。這樣,若數(shù)字圖書館管理者從任何k 個(gè)主機(jī)Mi1,Mi2,…,Mik獲取相關(guān)秘密因子f(i1),f(i2),…,f(ik),便可通過計(jì)算恢復(fù)出密鑰種子
Seed:
但是,如果獲得任何等于或少于k-1個(gè)主機(jī)的密鑰因子,則無法恢復(fù)密鑰種子。這是因?yàn)?,若僅僅具備k-1 個(gè)密鑰因子f(i1),f(i2),…,f(ik-1),要想計(jì)算出Seed,則必須解出線性方程組:
才能獲得Seed。然而,這是一個(gè)k-1 個(gè)方程構(gòu)成的具有k 個(gè)未知量的線性方程組,故無法解出Seed。因此,若僅僅獲得少于或等于k-1 個(gè)主機(jī)的秘密因子,是無法獲得Seed 的。下面的圖3和圖4給出了數(shù)字圖書密鑰種子Seed 的(k,t)門限秘密分割和恢復(fù)過程。(圖3、圖4)
圖3 數(shù)字圖書密鑰種子Seed的(k,t)門限秘密分割過程
圖4 數(shù)字圖書密鑰種子Seed的恢復(fù)過程
通過上述的秘密分割方案,使得Seed 具有很好的安全性。首先,需要注意的是,秘密因子被分別秘密地保存到t 個(gè)主機(jī)上。即使一個(gè)或小于等于k-1 個(gè)主機(jī)的密鑰因子遭到泄露,非法用戶仍然無法獲得數(shù)字圖書的加密密鑰種子。其次,即使若干個(gè)主機(jī)遭到物理損害,只要仍有k個(gè)主機(jī)密鑰因子保存完好,則數(shù)字圖書館管理者便可根據(jù)這k 個(gè)主機(jī)密鑰因子恢復(fù)出密鑰種子,從而可以計(jì)算出任何一本數(shù)字圖書的加密密鑰(解密密鑰),并能解密相應(yīng)的數(shù)字圖書的密文。因此,這種將數(shù)字圖書的加密密鑰種子進(jìn)行秘密分割的方案具有安全的保存特性和恢復(fù)特性。
數(shù)字圖書館的主要存儲(chǔ)內(nèi)容是數(shù)字圖書。為保證數(shù)字圖書館數(shù)字圖書的安全性,本文提出利用AES 加密海量數(shù)字圖書的思路。并且,為使得數(shù)字圖書的加密具有更好的安全性,本文提出利用Hash函數(shù)和密鑰種子為不同的圖書產(chǎn)生不同的加密密鑰,針對(duì)不同的數(shù)字圖書利用不同的加密密鑰進(jìn)行加密。數(shù)字圖書的加密密鑰互不相關(guān),即一本圖書的加密密鑰泄露并不會(huì)影響其他數(shù)字圖書的密文的安全性。同時(shí),數(shù)字圖書館管理者無需存儲(chǔ)數(shù)字圖書的加密密鑰,其可以方便地利用密鑰種子和數(shù)字圖書的代表信息恢復(fù)數(shù)字圖書的加密密鑰。為使得密鑰種子具有較好的安全性,本文還提出利用門限方案對(duì)數(shù)字圖書加密密鑰種子進(jìn)行秘密分割,使得密鑰種子具有更安全的保存特性和恢復(fù)特性。
[1]張長安,柏麗娜.DRM技術(shù)及其在數(shù)字圖書館中的應(yīng)用[J].現(xiàn)代圖書情報(bào)技術(shù),2003.3.
[2]楊海平.E-book研究[J].中國圖書館學(xué)報(bào),2001.4.
[3]楊海平.電子圖書版權(quán)問題研究[J].圖書館論壇,2004.24.6.
[4]Rivest R L,Shamir A,Adelman L.A Method for Obtain Digital Signatures and Public-key Cryptosystem.Commun.ACM,21.2.
[5]ElGamal T.A Public Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms.IEEE Tran.Information Theory,1985.4.
[6]DanBoneh,Xavier Boyen.Secure Identity Based Encryption Without Random Oracles.In:M.Franklin(Ed.):CRYPTO2004.Berlin:Springer-Verlage,LNCS3152,2004.
[7]楊波.現(xiàn)代密碼學(xué)(第二版)[M].北京:清華大學(xué)出版社,2009.6.