随着网络和信息技术的发展,数字图书馆必将给读者和用户带来极大的方便。然而,数字图书馆建设中数字图书的安全存储也将面临着一种挑战。为此,我们需要对数字图书进行加密。

一、数字图书对称加密措施

目前,常见的加密技术可以分为两类:非对称加密技术和对称加密技术。非对称加密技术又称为公钥加密技术。非对称加密技术的核心是非对称加密算法,而这些算法的安全性主要是基于密码单向函数和数学困难问题。在非对称加密算法中,使用的加密密钥和解密密钥不同。通常,由加密密钥无法推出解密密钥。比较经典的非对称加密算法主要包括基于大数分解困难问题的RSA算法,基于离散对数困难问题的EIGmal加密算法和基于双线性对的加密算法。然而,这些加密和解密算法需要幂方运算、模数运算或双线性对运算,故相对于对称加密算法而言,他们的计算速度较慢。特别是对海量数字图书进行加密时,这种非对称加密算法是
不可取的。因此,对于数字图书而言,利用对称加密算法进行加密是一种理想的选择。

与非对称加密算法不同的是,对称加密算法使用的加密密钥和解密密钥相同或者等价。对称加密算法主要包括三类,即DES、IDEA和AES。目前,使用最为广泛和流行的是DES。DES由美国IBM公司研制,其技术和应用也非常成熟。IDEA是一种设计比较成功的对称加密算法,但其目前应用并不广泛。AES以Rigndael算法为核心,采取的是宽轨迹策略,具备抵抗差分密码分析及线性密码分析的能力。其比DES快,更为安全,其密
钥长度具有128比特、192比特和256比特三种选择。重要的是,对于AES,目前还没有有效的攻击手段和破解方法。因此,建议利用AES对海量的数字图书进行加密,并将数字图书的密文保存到数字图书馆的存储设备中。

对称加密算法的安全性主要依赖于加密密钥(解密密钥)的安全性。一旦加密密钥遭到泄露,则密钥获得者可以根据加密密钥解密数字图书的密文,从而获得数字图书的原文。因此,从某种意义上讲,数字图书的安全性,主要依赖于加密密钥的安全性。因此,需要加强对数字图书加密密钥的安全保管。同时,需要注意的是,对于数以百万计的海量数字图书,如果使用同一个加密密钥进行对称加密,则在某种情况下会具有潜在威胁。比如,若这一加密密钥被某人非法获取或破解,则他(她)可以解密所有的数字图书,因此,为保证数字图书对称加密更为安全,建议对不同的数字图书采用不同的加密密钥进行加密,从而使数字图书的加密措施更为安全。这是因为,即使一本数字图书的加密密钥遭到泄露,但其他数字图书对应的加密密钥仍然安全。即尽量避免加密密钥的重复使用。然而,我们面临着一个问题,如果每本图书都具有不同的加密密钥,则对于数以百万计的海量数字图书,需要设置数以百万计的加密密钥。对于如此庞大的密钥量,如何进行管理,是一个需要解决的问题。

二、数字图书加密密钥的管理和加密措施

为更加安全地对数字图书进行加密,我们除了选用AES加密算法外,希望每一本数字图书都使用不同的对称加密密钥进行加密。如何针对不同数字图书,安全地产生不同的数字图书加密密钥,如何保存这些密钥是本节讨论的主要内容。在给出这些密钥管理措施之前,需要先给出一些参数。

假定H:{O,1)’_+<0,1}]为一个安全的密码单向hash函数,其将任意长的二进制串映为长度为l的二进制串。在这里,l可以取128、192和256三种选择。数字图书馆的管理者随机选取一个长度为 d的二进制串Seed,d可以取1024,或者更长的Seed作为所有数字图书的密钥种子,用于为所有的数字图书产生加密密钥。在这里,需要注意的是,Seed应该由数字图书馆的管理者采取门限措施予以安全保存。

现在,对任何一本数字图书Booki,为对其产生加密密钥,数字图书馆的管理者计算:

booki_key=H (SeedllbookLJnformation)

并将bookLkey作为book,的加密密 钥。在这里,bookLinformation表示数字图书Book,的简要代表信息,其主要包括图书的作者、出版商、出版日期、书号等信息,而符号“II’壤示二进制串的连接。由于hash函数具有抗碰撞性和均匀分布性,故对不同的book.information,将生成不同的bookLkey。最终,将booki_key作为数字图书booki的加密密钥,并用AES算法对book,进行加密得到Booki的密文:

CipherrAES (Bookj, bookLkey)

将相应的密文Cipheri保存在数字图书馆的存储设备上,从而保证数字图书的安全性。这样,结合上一节的内容,图1给出数字图书的一个加密方案。

1

从图1可以看出,每本数字图书Booki所使用的加密密钥booki_key各不相同,故每本数字图书加密后产生的密文Cipher,也各不相同。

虽然加密密钥booki_key各不相同,但数字图书馆的管理者无需存储这些加密密钥。这是因为,对于任何一本数字图书Booki,数字图书馆的管理者只需计算:

bookLkey=H (SeedllbookLinformation)

便可获得对应图书的加密密钥。因此,对于管理者,其只需秘密的存储密钥种子Seed即可。

当用户需要阅读数字图书的原文Booki时,数字图书馆管理者利用密钥种子Seed和hash函数H计算出的加密密钥booki_key,并利用AES解密算法还原数字图书密文C ipheri对应的原文,即计算:

Booki=AES-i (Cipher, bookkey)

在上式中,AES-表示与AES加密算法对应的解密算法。可以通过图2描述Cipheri的解密过程。

1

小知识之Hash函数

Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。