Deve ser possível usar dm-crypt / LUKS / cryptsetup para isso usando as seguintes etapas:
- Crie um arquivo de imagem de disco esparso:
dd if=/dev/zero of=IMAGEFILE bs=1 count=1 seek=SIZE
- Gere uma chave aleatória em um arquivo:
dd if=/dev/random of=KEYFILE bs=1024 count=1
- Use
cryptsetup luksFormat --key-file KEYFILE --cipher aes-xts-plain --size 512 IMAGEFILE
(Ou use outro código e comprimento de chave. Note que 512 aqui lhe dará AES com 256 bits por causa do XTS.) - Abra o contêiner de criptografia:
cryptsetup luksOpen --key-file KEYFILE IMAGEFILE NAME
- Crie o sistema de arquivos em
/dev/mapper/NAME
. - Monte o sistema de arquivos como de costume.
Seu script teria apenas que executar as etapas 4 e 6. Para desmontar / fechar, desmonte o sistema de arquivos e chame cryptsetup luksClose NAME
.
Observe que o uso de arquivos esparsos vazará a informação de que setores do disco já foram usados (da mesma forma que não sobrescrevendo uma partição com dados aleatórios antes de criptografá-la). Cabe a você decidir se isso é aceitável para você.
Observe também que a exclusão de arquivos não diminuirá a imagem do disco. O arquivo esparso crescerá monotonicamente.