分页: 1 / 1

《NetBSD指南-14.4.2.创建加密的CD/DVD》

发表于 : 2010-03-02 22:19
leo
cgd(4) 提供了整个分区或磁盘的高度安全的加密p。 遗憾的是, 创建 "正常的" CD 并非使用disklabel和newfs. 这两者全不能只把CDR放进驱动器内、配置cgd并且假设它同步时写入的是加密数据。标准的CD至少包含了一个由mkisofs(8)创建的ISO-9660文件系统, mkisofs(8)可从sysutils/cdrtools 软件包获得. ISO 镜像可 包含disklabels或cgd分区。
但是当然CD 读/写 硬件不在意文件系统,如果你喜欢你可以直接将原始数据或者一个加密的FFS文件系统写入CD, 我们将在这里讨论网CD上写加密的FFS文件系统。但是我警告你, 这样的CD除了NetBSD没有任何OS可以识别 - 即使是其它BSD系统,因为它们没有cgd.


创建加密CD的基本步骤是:
  • 创建一个(空的)镜像文件
  • 用vnd(4)将其注册为虚拟磁盘
  • 在这个vnd磁盘中配置cgd
  • 往cgd中拷贝内容
  • 取消所有的配置 (冲洗!)
  • 将这个镜像文件刻录到CD上
创建加密CD的第一个步骤就是用dd命令创建一个镜像文件。 镜像文件无法扩容, 所以创建时要考虑到足够的容量以容纳所需内容。说明:整个镜像在稍后要写到CD上, 所以创建一个仅包含了100 MB内容的700 MB镜像也需要对CD进行700 MB的写操作。有关DVD的一些信息: DVD仅在市场上标称为4.7 GB,4.7GB = 4.7 x 1024 x 1024 x 1024 = 5046586573 bytes. 事实上, 一张DVD仅能存储大约4.7 x 1000 x 1000 x 1000 = 4700000000 bytes, 这大约是4482MB或者4.37GB。 K当你创建DVD镜像时请记住这个值。不用替CD操心,它们的容量是实打实的700MB(734003200 Bytes).
以root身份运行下列所有命令!

CD:
# dd if=/dev/zero of=image.img bs=1m count=700

或者,DVD:
# dd if=/dev/zero of=image.img bs=1m count=4482

现在用这个镜像配置一个 vnd(4)-伪磁盘:
# vnconfig vnd0 image.img

为了使用 cgd, 必须创建一个特征文件,它描述了加密特征并包含了"密码盐". 我们这里命名它为/etc/cgd/image . 你可以在几个加密分区上使用同一个特征文件 (我是每台主机使用一个特征文件,为所有的可移动介质设置一个共享的特征文件 image , 但是,你的由你说了算).
我将使用AES-CBC和256位的key长度.参 cgd(4)cgdconfig(8) 以获取细节及替代。
下列命令将特征文件创建为 /etc/cgd/image. 在你刻录了任何一张CD后你肯定不想再次使用下列命令 , 因为只有在你丢失了特征文件并永远不再访问你的加密CD的时才会重建一个特征文件(这个文件包含的"盐"每次调用时均不同)。 考虑到这个文件被 郑重地备份了 并且可能 再次备份它! 你为这些CD应该使用 -V 参数来指定验证方法为"disklabel" (否则当你以后挂载这张CD时cgd不能鉴别出你是否为此CD输入了一个有效的密码)。

# cgdconfig -g -V disklabel aes-cbc 256 > /etc/cgd/image

现在是为我们的vbd磁盘配置一个 cgd 的时候了。 (对把"c"当作整个磁盘的所有平台(它们的 "sysctl kern.rawpartition" 命令打印出 "2", 而不是"3")来说,在这里用"c"替换掉 "d" ; 如果你在i386或amd64平台上, 这里的"d" 对你来说是正确的):

# cgdconfig -V re-enter cgd1 /dev/vnd0d /etc/cgd/image

只要cgd还没有一个disklabel,这里的 "-V re-enter" 选项就是需要的,这样我们才可能访问并配置它. 这个选项询问两次密码并用它来加密.
现在是时候在cgd里创建一个disklabel了。默认的label就可以, 所以用下列命令调用disklabel

# disklabel -e -I cgd1

然后用":wq" 快速保存并退出vi。
我们在cgd上建立一个文件系统, 然后最终将它挂载到一个地方:


# newfs /dev/rcgd1a# mount /dev/cgd1a /mnt


这时cgd已经配置好了! 现在我们将内容拷贝至 /mnt 目录下。 完成后, 反向配置过程,步骤为:
  1. 卸载 cgd1a:
    # umount /mnt
  2. 取消配置 cgd:
    # cgdconfig -u cgd1
  3. 取消配置 vnd:
    # vnconfig -u vnd0
下列命令是将镜像文件刻录到CD/DVD上的示例。 请为cdrecord调整 dev= 或者为growisofs调整 /dev/rcd0d . 说明:在NetBSD中 "rcd0d" is 是必须的。 Growisofs 可从 sysutils/dvd+rw-tools 软件包获得。 再说一此, 如果在你的平台上这是一个原始分区。用 "c" 替换掉 "d"
最后, 将镜像文件刻录到CD:
# cdrecord dev=/dev/rcd0d -v image.img

...或者DVD上:
# growisofs -dvd-compat -Z /dev/rcd0d=image.img

祝贺你! 你刚制作了一张真正的安全CD!