如何通过命令行创建临时随机 TrueCrypt 容器?

如何通过命令行创建临时随机 TrueCrypt 容器?

我想构建一个 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和 加密交换 ;-)

相关内容