我有一台联想电脑,正在运行 Ubuntu 20.04 LTS。
我想加密通过 USB 端口连接到 PC 的外部硬盘上的文件或目录(以存储非常非常安全的数据)。
那该怎么办呢?
答案1
如何创建加密文件/目录
从 universe 存储库安装 p7zip-full
右键单击文件或文件夹并选择
Compress
。确认档案名称并选择
.7z
,然后Create
。右键单击 .7z 存档,选择使用存档管理器打开。
选择右上角的三行图标,单击“密码”创建 AES-256 加密档案。
笔记
您需要安装 7Zip 才能在 Windows 机器上打开档案。
选择并记住强密码是加密安全的重要组成部分。互联网上有很多关于此主题的好文章。
HDD、SSD 和闪存驱动器都可能在不经意间损坏。SLC(单层单元)SSD 和闪存驱动器的使用寿命最长。最好将备份驱动器和密码副本放在保险箱中。
有关 P7Zip-Desktop 的完整教程可在此处找到:https://www.how2shout.com/linux/how-to-install-p7zip-gui-on-ubuntu-20-04-lts/
答案2
(对于目录,我会将其压缩为文件)
加密可以通过以下方式完成...
gpg -c {file}
提供一个体面的密码。解密方法:
gpg {file}.gpg
并提供您使用的密码。如果您想使用 Windows 解密,您可以使用“gpg4win”。完成后删除原始文件。
rinzwind@schijfwereld:~$ ls -ltr test
-rwx------ 1 rinzwind rinzwind 418 mei 14 18:11 test
rinzwind@schijfwereld:~$ file test
test: POSIX shell script, ASCII text executable
rinzwind@schijfwereld:~$ gpg -c test
rinzwind@schijfwereld:~$ file test*
test: POSIX shell script, ASCII text executable
test.gpg: GPG symmetrically encrypted data (AES256 cipher)
rinzwind@schijfwereld:~$ more test.gpg
�
�KY+�7���S/?Gp��(�ր��z&ĥ��Ag�����)|�IT[���>e�:\#/����Xko��^�)��@��m�6�'�
�vp;��؞
�XX���&�>Uk�v���rY!��sD����A�
r��=���'Ug�G�|6&(�l���\����fc��Q�Xn \�k�^�
�-�����G*��J��E
然后我会添加一些额外的安全措施:
sudo -i
chown root:root {file}
chmod 000 {file}
chattr +i {file}
最后一个设置了不可变位,要改变任何内容,您首先需要执行的操作chattr -i {file}
。它看起来像这样:
---------- 1 root root 353 mei 16 09:05 test.gpg
一个额外的方法可能是在文件开头添加“。”以将其隐藏。
答案3
您可以cryptsetup
在稀疏文件上使用来创建自动增长的加密容器。
如果你尚未安装cryptsetup
,请运行:
$ sudo apt update && sudo apt install cryptsetup
笔记:这不适用于 FAT32 或 exFAT 卷,因为它们不支持稀疏文件。您需要使用 NTFS 或 ext4,或者提前预分配磁盘空间。
需要 root 权限因为cryptsetup
在中创建设备/dev
。
创建一个稀疏文件,用于存储加密数据。稀疏文件不要预先占用所有空间,而是随着数据添加而增大。
10G
这意味着您将能够在容器中存储最多 10 GB 的数据(实际上由于文件系统开销而略少)。$ truncate -s 10G encrypted.luks
(有些工具一开始就会报告此文件大小为 10 GB - 这没问题)
在文件内部创建一个加密容器。
$ sudo cryptsetup luksFormat encrypted.luks WARNING! ======== This will overwrite data on encrypted.luks irrevocably. Are you sure? (Type uppercase yes): YES Enter passphrase for encrypted.luks: Verify passphrase:
打开加密的容器。
$ sudo cryptsetup open encrypted.luks encrypted Enter passphrase for encrypted.luks:
在容器内创建文件系统。(选择任意一个 - 它不必与驱动器的文件系统匹配。)
$ sudo mkfs.ext2 -m0 -Lencrypted /dev/mapper/encrypted mke2fs 1.45.5 (07-Jan-2020) Creating filesystem with 2617344 4k blocks and 655360 inodes Filesystem UUID: d61f80bc-e3aa-41c8-91ca-97b8302d8bc0 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done
您现在可以挂载文件系统。
$ sudo mount /dev/mapper/encrypted /mnt $ ls /mnt lost+found
如果使用正确的工具检查,容器文件应该远小于 10 GB:
$ du -h encrypted.luks
249M encrypted.luks
$ du -h --apparent-size encrypted.luks
10G encrypted.luks
要“弹出”或移除容器:
卸载它。
$ sudo umount /mnt
关闭容器。
$ sudo cryptsetup close encrypted
如果您想销毁容器,可以选择删除该文件。
$ sudo rm encrypted.luks
注意当你从容器中删除文件时,容器不会缩小。您可以尝试使用 打开它,--allow-discards
然后fstrim -v /mnt
再次在稀疏文件中打孔。它在本地磁盘上对我有用,但在 USB 驱动器上却不行。也许这取决于“父”文件系统,我不知道。
答案4
创建加密文件容器的另一个好工具是 VeraCrypt:
https://www.veracrypt.fr/en/Home.html
Cryptsetup 和 LUKS 在 Linux 集成和安全性方面更胜一筹,而 VeraCrypt 的主要优势是可移植性,即您可以在 Linux 和 MS-Windows 以及其他多个系统中安装同一个容器。
在 Linux 中日常使用 VeraCrypt 有其自身的缺点,这些缺点在其他问题中进行了讨论。
请注意,没有加密可以使您免于缺乏日常安全卫生,但这是一个非常广泛的主题,值得写多卷博士论文。