我想构建一个 shell 脚本,该脚本将使用 TrueCrypt 创建一个临时的一次性容器,其中包含一个用于暂存空间的随机密钥文件。基本上,我想要一个Linux tmpfs 挂载(带有加密交换),但适用于 Mac OS X。
如何在 Mac OS X 下使用随机密钥文件生成 TrueCrypt 卷?
答案1
以下命令将在设备上创建一个带有随机密钥文件的 TrueCrypt 卷$DEVPATH
,*完全覆盖该磁盘/设备上的任何信息!!!*然后它将附加 TrueCrypt 容器,在此设备上创建一个 HFS+ 格式的卷,并销毁用于创建它的密钥:
#!/bin/bash
# Source for random data. Use /dev/random for more secure but slower random data""
RAND=/dev/urandom
# Create a random keyfile:
KEYFILE=/tmp/scratch.key
dd if=$RAND of=$KEYFILE bs=1 count=4096
# Create a TrueCrypt volume on $DEVPATH using $KEYFIlE as the keyfile:
/Applications/TrueCrypt.app/Contents/MacOS/TrueCrypt -t -c \
-k $KEYFILE --volume-type=normal --quick --encryption=AES \
--hash=RIPEMD-160 --filesystem="none" --password="" \
--random-source=$RAND $DEVPATH
# Attach the TrueCrypt volume as a device:
/Applications/TrueCrypt.app/Contents/MacOS/TrueCrypt -t --mount \
-k $KEYFILE --password="" --protect-hidden=no \
--filesystem=none $DEVPATH
# Find the TrueCrypt device:
TCDEV=$(/Applications/TrueCrypt.app/Contents/MacOS/TrueCrypt -t -l | grep $DEVPATH | cut -d ' ' -f 3)
# Create a filesystem on the TrueCrypt device:
diskutil eraseVolume JHFS+ Scratch $TCDEV
# And destroy the key so this is a one-time use volume:
srm $KEYFILE
注意:
- 创建的 TrueCrypt 卷使用随机密钥文件无需密码。随机密钥文件由 创建
dd if=$RAND of=$KEYFILE bs=1 count=4096
。如果您想要一个可重复使用的容器,请删除该行并指向KEYFILE=
静态文件。一定要删除以下行:srm $KEYFILE
如果你这样做,因为该文件行安全删除密钥文件!!!* - 该脚本的随机数据来自非阻塞随机源
/dev/urandom
。更改为RAND=/dev/random
可获得更高的安全性,但速度会变慢。 - 这设备
$DEVPATH
将被该命令覆盖!!!!一定要确保您知道自己在做什么。为了安全起见,请设置DEVPATH
为一个文件,例如,/tmp/some_file
并将 a 附加--size=nnnn
到创建卷的 TrueCrypt 行,其中nnnn
是要创建的文件的字节大小。删除该--quick
选项。这会慢得多。 - 这在 Mac OS X 上有效。对于 Linux,请使用
mkfs.ext3
而不是diskutil eraseVolume
。或者直接使用mount -t tmpfs
和 加密交换 ;-)