但是当然CD 读/写 硬件不在意文件系统,如果你喜欢你可以直接将原始数据或者一个加密的FFS文件系统写入CD, 我们将在这里讨论网CD上写加密的FFS文件系统。但是我警告你, 这样的CD除了NetBSD没有任何OS可以识别 - 即使是其它BSD系统,因为它们没有cgd.
创建加密CD的基本步骤是:
- 创建一个(空的)镜像文件
- 用vnd(4)将其注册为虚拟磁盘
- 在这个vnd磁盘中配置cgd
- 往cgd中拷贝内容
- 取消所有的配置 (冲洗!)
- 将这个镜像文件刻录到CD上
以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 目录下。 完成后, 反向配置过程,步骤为:
- 卸载 cgd1a:
# umount /mnt - 取消配置 cgd:
# cgdconfig -u cgd1 - 取消配置 vnd:
# vnconfig -u vnd0
最后, 将镜像文件刻录到CD:
# cdrecord dev=/dev/rcd0d -v image.img
...或者DVD上:
# growisofs -dvd-compat -Z /dev/rcd0d=image.img
祝贺你! 你刚制作了一张真正的安全CD!