2008年(8065)
分类: 服务器与存储
2008-09-18 13:27:57
下图描述了加密并备份数据到磁带的流程,以及密钥如何被传递到磁带驱动器,然后写入介质。本例中,我们假设EKM运行在一台服务器上,而磁带库、磁带驱动器则连接到了另一台服务器上。服务器的类型并不重要,可以相同也可以不同,因为类型相同与否并不影响结果。
我们假设来自BP的证书已经被导入密钥库(keystore)。其中当然只有公钥,私钥仍保留在BP那里。
现在我们那台服务器发送了一个写请求给驱动器。我们的驱动器有加密功能,主机也有加密请求。写初始化过程中,驱动器获得了两个来自主机或者代理的KEK(key encrypting keys)标签,它们是两个符合RSA算法KEK的别名。首先,驱动器向EKM发送获得数据密钥DK的申请,EKM接到申请后确认该驱动器是否在有效驱动器列表内,如果在列表内,EKM就会从密码服务那里获得一个随机的DK。然后EKM找到别名为两个KEK标签的KEK的公钥部分。同时,EKM再向加密服务发出申请,用两个KEK的公钥部分分别加密DK,创建两个DK的加密实例,即生成了两个EEDK(外部加密数据密钥)。
EKM将两个EEDK发送给磁带驱动器。驱动器则将它们存在磁带的多个位置和磁带内存里。此外,EKM还会用安全的方法把DK(data key)发送给驱动器。驱动器接收到DK后,就可以用它完成加密操作。
创建EEDK的模式有两个:
第一种模式是明文或者标签。这种模式是将KEK标签存在EEDK中。
第二种模式是哈希。这种模式是将KEK的公钥部分的哈希存在EEDK中。
在共享BP的KEK时,我们建议使用哈希模式。
我们以在另一地点解密数据为例。磁带在它的CM(Cartridge memory)中有两个EEDK,我们称其为EEDK1和EEDK2。EEDK1采用的是明文(或者标签)模式,EEDK2采用的是哈希模式。
将加密后的带子装入带机进行读或者续写操作。首先是从磁带读出两个EEDK。驱动器申请EKM解密EEDK获得DK。EKM验证驱动器在有效驱动器列表中。通过验证后,EKM向密钥库(keystore)申请获得每个用来创建EEDK的私钥部分。在密钥库中不保存和EEDK1相关的KEK标签,但保存EEDK2的公钥的哈希值。
EKM向加密服务发出申请,请求使用和EEDK2相关的KEK的私钥解密EEDK2,获得DK。EKM以安全的方法将DK发送给磁带驱动器。现在,驱动器则既可以用DK解密数据,也可以用DK继续向磁带追加数据。
本例中将描述使用TSM作为密钥管理器时,加密数据并写入磁带的过程。
驱动器先装入一盘要加密的带子,再将磁带的ID或者卷标发送给TSM(Tivoli Storage Manager)。TSM生成一个256位的AES数据密钥(DK),加密DK,将DK连同磁带ID一起存在TSM的数据库中。然后,TSM将DK发送给磁带驱动器。驱动器使用DK和AES算法加密数据并将加密后的数据写入磁带。
仍以TSM为例。驱动器装载加密后的磁带,读取磁带的ID或卷标,并将其发送给TSM。TSM在其内部数据库中用ID寻找相关记录,解密相关项获得DK。TSM将DK发送给磁带驱动器。
现在,磁带驱动器就可以使用这个256位的DK和AES算法解密数据了。