É possível, primeiro você deve criar um arquivo esparso, suponha 512MB:
truncate -s 512M file.img
Então, com cryptsetup, vamos criptografar o arquivo como um dispositivo (a sintaxe é a mesma, aqui use apenas as opções básicas)
cryptsetup -v luksFormat file.img
WARNING!
========
This will overwrite data on file.img irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
Command successful.
Abrimos, portanto, o volume criptografado:
cryptsetup luksOpen file.img sparse_file
Enter passphrase for file.img:
e criamos o fs:
mkfs.ext4 /dev/mapper/ sparse_file
mke2fs 1:42:12 (29-Aug-2014)
Creating filesystems with 1k blocks 522240 and 130560 inodes
Filesystem UUID: ec4e3529-0ee5-4b31-9487-5ae1c598c9d3
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
monte o arquivo criptografado:
mount /dev/mapper/sparse_file /mnt/sparse_file/
du -h --apparent-size file.img
512M file.img
du -h file.img
17M file.img
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/sparse_file 486m 2.3M 455M 1% /mnt/sparse_file
et voilà