标签 LUKS 下的文章

LUKS 是 Linux 用户中流行的磁盘加密机制。在这篇术语解析文章中,可以了解更多关于 LUKS 的信息。

计算机安全旨在保护私密信息。有许多方法可以保护系统。一些用户使用简单的用户名/密码登录方案进行基本保护。其他用户可能会通过加密以不同的方式增加额外的保护,如使用 VPN 和磁盘加密。

如果你的计算机上有敏感的客户数据(你可能在经营一家企业),或被视为知识产权的材料,或者你对隐私非常谨慎,你可能要考虑磁盘加密。

磁盘加密的一些好处包括:

  • 保护系统免受黑客的攻击
  • 防止数据泄露
  • 保护你免受潜在的责任问题

磁盘加密软件可以防止台式机硬盘驱动器、便携式 USB 存储设备或笔记本电脑被访问,除非用户输入正确的身份验证数据。如果你的笔记本电脑丢失或被盗,加密会保护磁盘上的数据。

如今,新的 Windows 系统默认配备了 BitLocker 加密。在 Linux 上,LUKS 是最常用的磁盘加密方式。

想知道什么是 LUKS?我会为你简要介绍这个主题。

技术术语

在继续之前,需要定义一些术语。LUKS 有很多内容,因此将其拆解为细项将有助于你进一步了解。

Volume :卷是一个逻辑存储区域,可用于存储数据。在磁盘加密的场景中卷指的是已加密以保护其内容的磁盘部分。

参数 Parameters :参数是控制加密算法运行方式的设置。参数可能包括所使用的加密算法、密钥大小以及有关如何执行加密的其他详细信息。

加密类型 Cipher type **:它是指用于加密的数学算法。它指的是用于保护加密卷上数据的具体加密算法。

密钥大小Key size:密钥大小是衡量加密算法强度的指标:密钥大小越大,加密强度越高。通常以位数表示,例如 128 位加密或 256 位加密。

头部 Header :头部是加密卷开头的特殊区域,包含有关加密的信息,例如所使用的加密算法和加密密钥。

下一个定义对于新手来说可能有些棘手,但了解它还是很重要的,尤其在处理 LUKS 时,这会非常有用。

容器 Container :容器是一个特殊的文件,类似于虚拟加密卷。它可以用于存储加密数据,就像加密分区一样。不同之处在于容器是一个文件,可以存储在未加密的分区上,而加密分区是整个磁盘的一部分,已经完全加密。因此,容器是 充当虚拟加密卷的文件

LUKS 是什么以及它能做什么?

LUKS( Linux 统一密钥设置 Linux Unified Key Setup )是由 Clemens Fruhwirth 在 2004 年创建的磁盘加密规范,最初用于 Linux。它是一种知名的、安全的、高性能的磁盘加密方法,基于改进版本的 cryptsetup,使用 dm-crypt 作为磁盘加密后端。LUKS 也是网络附加存储(NAS)设备中常用的加密格式。

LUKS 还可以用于创建和运行加密容器。加密容器具有与 LUKS 全盘加密相同的保护级别。LUKS 还提供多种加密算法、多种加密模式和多种哈希函数,有 40 多种可能的组合。

LUKS 结构示意图

任何文件系统都可以进行加密,包括交换分区。加密卷的开头有一个未加密的头部,它允许存储多达 8 个(LUKS1)或 32 个(LUKS2)加密密钥,以及诸如密码类型和密钥大小之类的加密参数。

这个头部的存在是 LUKS 和 dm-crypt 的一个重要区别,因为头部允许使用多个不同的密钥短语,并能轻松更改和删除它们。然而,值得提醒的是,如果头部丢失或损坏,设备将无法解密。

LUKS 有两个版本,LUKS2 具有更强的头部损坏抗击性,并默认使用 Argon2 加密算法(LUKS1 使用 PBKDF2)。在某些情况下,可以在两个版本之间进行转换,但是 LUKS1 可能不支持某些功能。

希望了解更多信息?

希望本文有助于你对 LUKS 和加密有一些了解。关于使用 LUKS 创建和使用加密分区的确切步骤会因个人需求而异,因此我不会在此处涵盖安装和设置方面的内容。

如果你想要一份指南来帮助你设置 LUKS,可以在这篇文章中找到一个很好的指南:《使用 LUKS 对 Linux 分区进行基本加密指南》。如果你对此还不熟悉,并且想要尝试使用 LUKS,可以在虚拟机或闲置计算机上进行安全学习,以了解其工作原理。

(题图:MJ/2c6b83e6-4bcb-4ce3-a49f-3cb38caad7d2)


via: https://itsfoss.com/luks/

作者:Bill Dyer 选题:lkxed 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

使用 Linux 统一密钥设置(LUKS)为物理驱动器或云存储上的敏感文件创建一个加密保险库。

 title=

最近,我演示了如何在 Linux 上使用 统一密钥设置 Linux Unified Key Setup LUKS)和 cryptsetup 命令 实现全盘加密。虽然加密整个硬盘在很多情况下是有用的,但也有一些原因让你不想对整个硬盘进行加密。例如,你可能需要让一个硬盘在多个平台上工作,其中一些平台可能没有集成 LUKS。此外,现在是 21 世纪,由于云的存在,你可能不会使用物理硬盘来处理所有的数据。

几年前,有一个名为 TrueCrypt 的系统,允许用户创建加密的文件保险库,可以通过 TrueCrypt 解密来提供读/写访问。这是一项有用的技术,基本上提供了一个虚拟的便携式、完全加密的驱动器,你可以在那里存储重要数据。TrueCrypt 项目关闭了,但它可以作为一个有趣的模型。

幸运的是,LUKS 是一个灵活的系统,你可以使用它和 cryptsetup 在一个独立的文件中创建一个加密保险库,你可以将其保存在物理驱动器或云存储中。

下面就来介绍一下怎么做。

1、建立一个空文件

首先,你必须创建一个预定大小的空文件。就像是一种保险库或保险箱,你可以在其中存储其他文件。你使用的命令是 util-linux 软件包中的 fallocate

$ fallocate --length 512M vaultfile.img

这个例子创建了一个 512MB 的文件,但你可以把你的文件做成任何你想要的大小。

2、创建一个 LUKS 卷

接下来,在空文件中创建一个 LUKS 卷:

$ cryptsetup --verify-passphrase \
    luksFormat vaultfile.img

3、打开 LUKS 卷

要想创建一个可以存储文件的文件系统,必须先打开 LUKS 卷,并将其挂载到电脑上:

$ sudo cryptsetup open \
    --type luks vaultfile.img myvault
$ ls /dev/mapper
myvault

4、建立一个文件系统

在你打开的保险库中建立一个文件系统:

$ sudo mkfs.ext4 -L myvault /dev/mapper/myvault

如果你现在不需要它做什么,你可以关闭它:

$ sudo cryptsetup close myvault

5、开始使用你的加密保险库

现在一切都设置好了,你可以在任何需要存储或访问私人数据的时候使用你的加密文件库。要访问你的保险库,必须将其挂载为一个可用的文件系统:

$ sudo cryptsetup open \
    --type luks vaultfile.img myvault
$ ls /dev/mapper
myvault
$ sudo mkdir /myvault
$ sudo mount /dev/mapper/myvault /myvault

这个例子用 cryptsetup 打开保险库,然后把保险库从 /dev/mapper 下挂载到一个叫 /myvault 的新目录。和 Linux 上的任何卷一样,你可以把 LUKS 卷挂载到任何你想挂载的地方,所以除了 /myvault,你可以用 /mnt~/myvault 或任何你喜欢的位置。

当它被挂载后,你的 LUKS 卷就会被解密。你可以像读取和写入文件一样读取和写入它,就像它是一个物理驱动器一样。

当使用完你的加密保险库时,请卸载并关闭它:

$ sudo umount /myvault
$ sudo cryptsetup close myvault

加密的文件保险库

你用 LUKS 加密的镜像文件和其他文件一样,都是可移动的,因此你可以将你的保险库存储在硬盘、外置硬盘,甚至是互联网上。只要你可以使用 LUKS,就可以解密、挂载和使用它来保证你的数据安全。轻松加密,提高数据安全性,不妨一试。


via: https://opensource.com/article/21/4/linux-encryption

作者:Seth Kenlon 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

头条消息

专门为 KDE Plasma 5桌面环境设计的分区管理软件 KDE 分区管理器 2.2.0 发布,在这个版本中提供了大量的 LUKS 加密文件系统支持。它允许用户关闭或打开使用 LUKS 加密的卷,也支持加密文件系统重新划分大小,还可以移动关闭的 LUKS 加密卷、移除打开的 LUKS 卷、检查内部文件系统的错误等等。这是目前为止唯一一个支持 LUKS 加密文件系统调整的开源软件。

版本更迭

  • 代号为“Atticus”的 Parsix GNU/Linux 8.5 和即将发行的代号为“Erik”的 Parsix GNU/Linux 8.10 最近都对核心组件的安全问题进行了修复。包括 expat, libgd2, libndp, ImageMagick, libidn, jansson, IceDove, libarchive, QEMU, Wireshark, librsvg, WebSVN, libxstream-java, xerces-c, swift-plugin-s3, and atheme-services。还没有进行更新的“Atticus”用户可以进行更新了。
  • Parsix GNU/Linux 的开发者发布了官方的 USB 镜像,允许用户使用 USB 闪存棒快速在自己机器上部署最新的 Parsix GNU/Linux 发行版,并且他们承诺很快就会提供对64位机器上 UEFI 的支持。与此同时,“Erik”的开发正在进行中,最近的构建版本采用 GNOME 3.20.1 桌面环境,鉴于 GNOME 3.20.2 已经出来了,我们期待看到采用最新 GNOME 桌面环境的发行版。
  • 面向树莓派3和2的 Sabayon ARM 16.06 媒体中心版发布。与此同时,Sabayon ARM 16.06 的基础版镜像采用了最新的稳定版 Linux 4.4 内核。点此下载媒体中心版和基础版镜像文件。
  • Linux 4.6 内核已经发布两周了,Linus Torvalds 为我们介绍了下一个Linux内核分支 Linux 4.7 的开发周期。目前第一个发行候选版本已经可以从官网进行下载了。这一版最显著的一个特性是对 VFS ( 虚拟文件系统 Virtual File System )层的重大修改,它可能会影响所有 Linux 内核支持的文件系统。
  • 在NetBSD 7.0发布7个月后,NetBSD 7.0.1 发布,修复了核心组件的许多安全漏洞,改善了对 ODROID-C1 单板计算机的支持。
  • MKVToolNix 9.2.0 发布,这一版没有重大特性的更改,尽管如此,还是建议用户进行更新。

我们中有些人出于安全原因,在家里或者VPS上通过Linux统一密钥配置(LUKS)为硬盘驱动器加密,而这些驱动器的容量很快会增长到数十或数百GB。因此,虽然我们享受着LUKS设备带来的安全感,但是我们也该开始考虑一个可能的远程备份方案了。对于安全的非现场备份,我们将需要能在LUKS加密的设备上以块级别操作的东西。因此,最后我们发现这么个状况,我们每次都需要传输想要做备份的整个LUKS设备(比如说200GB大)。很明显,这是不可行的。我们该怎么来处理这个问题呢?

一个解决方案: Bdsync

这时,一个卓越的开源工具来拯救我们了,它叫Bdsync(多亏了Rolf Fokkens)。顾名思义,Bdsync可以通过网络同步“块设备”。对于快速同步,Bdsync会生成并对比本地/远程块设备的块的MD5校验和,只同步差异部分。rsync在文件系统级别可以做的,Bdsync可以在块设备级别完成。很自然,对于LUKS加密的设备它也能工作得很好。相当地灵巧!

使用Bdsync,首次备份将拷贝整个LUKS块设备到远程主机,因而会花费大量时间来完成。然而,在初始备份后,如果我们在LUKS设备新建一些文件,再次备份就会很快完成,因为我们只需拷贝修改过的块。经典的增量备份在起作用了!

安装Bdsync到Linux

Bdsync并不包含在Linux发行版的标准仓库中,因而你需要从源代码来构建它。使用以下针对特定版本的指令来安装Bdsync及其手册页到你的系统中。

Debian,Ubuntu或Linux Mint

$ sudo apt-get install git gcc libssl-dev
$ git clone https://github.com/TargetHolding/bdsync.git
$ cd bdsync
$ make
$ sudo cp bdsync /usr/local/sbin
$ sudo mkdir -p /usr/local/man/man1
$ sudo sh -c 'gzip -c bdsync.1 > /usr/local/man/man1/bdsync.1.gz'

Fedora或CentOS/RHEL

$ sudo yum install git gcc openssl-devel
$ git clone https://github.com/TargetHolding/bdsync.git
$ cd bdsync
$ make
$ sudo cp bdsync /usr/local/sbin
$ sudo mkdir -p /usr/local/man/man1
$ sudo sh -c 'gzip -c bdsync.1 > /usr/local/man/man1/bdsync.1.gz'

对LUKS加密的设备实施非现场增量备份

我假定你已经准备好了一个LUKS加密的块设备作为备份源(如,/dev/LOCDEV)。同时,我假定你也有一台远程主机,用以作为源设备的备份点(如,/dev/REMDEV)。

你需要在两台系统上具有root帐号访问权限,并且设置从本地访问远程的无密码SSH访问。最后,你需要安装Bdsync到两台主机上。

要在本地主机上初始化一个远程备份进程,我们需要以root执行以下命令:

# bdsync "ssh root@remote_host bdsync --server" /dev/LOCDEV /dev/REMDEV | gzip > /some_local_path/DEV.bdsync.gz 

这里需要进行一些说明。Bdsync客户端将以root打开一个到远程主机的SSH连接,并执行带有--server选项的Bdsync客户端。明确说明一下,/dev/LOCDEV是我们的本地主机上的源LUKS块设备,而/dev/REMDEV是远程主机上的目标块设备。它们可以是/dev/sda(作为整个磁盘),或者/dev/sda2(作为单个分区)。本地Bdsync客户端的输出结果随后被管道输送到gzip,用来在本地主机中创建DEV.bdsync.gz(所谓的二进制补丁文件)。

你第一次运行上面的命令的时候,它会花费很长一段时间,这取决于你的互联网/局域网速度,以及/dev/LOCDEV的大小。记住,你必须有两个大小相同的块设备(/dev/LOCDEV和/dev/REMDEV)。

下一步是要将补丁文件从本地主机拷贝到远程主机。一种方式是使用scp:

# scp /some_local_path/DEV.bdsync.gz root@remote_host:/remote_path 

最后一步,是要在远程主机上执行以下命令,它们会将补丁文件应用到/dev/REMDEV:

# gzip -d < /remote_path/DEV.bdsync.gz | bdsync --patch=/dev/DSTDEV 

我推荐在使用真实数据部署Bdsync前,使用一些(没有任何重要数据)小分区来做这些测试。在你完全弄懂整个设置是如何工作之后,你可以开始备份真实数据。

尾声

小结之,我们演示了如何使用Bdsync来为LUKS设备实施增量备份。和rsync一样,每次备份只有一小部分数据,而不是整个LUKS设备,需要被推送到非现场备份点,这样会节省带宽和备份时间。剩下来,需要通过SSH或SCP来保证所有数据传输的安全,事实上设备自身是由LUKS加密的。也可以通过使用可以运行bdsync的专用用户(而非root)来改进该配置。我们也可以将bdsync用于任何块设备,如LVM卷或RAID磁盘,也可以很轻易地设置Bdsync备份本地磁盘到USB驱动器上。如你所见,它有着无限可能性!

随时分享你的想法。


via: http://xmodulo.com/remote-incremental-backup-luks-encrypted-disk-partition.html

作者:Iulian Murgulet 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

LUKS(linux unified key setup)是一个对磁盘分区进行加密的工具,算法貌似有叫做“双鱼算法”(具体是什么,我忘了……) 命令:

  1. cryptsetup luksFormat /dev/sda15(注意:是个分区),然后就会输入两次密码,
  2. 之后用cryptsetup luksOpen /dev/sda15 xxx(因为LUKS将分区映射成一个xxx,可以在/dev/mapper下看到xxx ),要输入前面的密码才能打开
  3. 对LUKS分区进行格式化,mkfs.ext3 /dev/mapper/xxx后,就可以mount /dev/mapper/xxx /mnt下了
  4. 反挂载就是先umount ,然后cryptsetup luksClose xxx(注意luks紧跟的参数首字母都是大写的哦!)

PS:

这个说一个开机自动挂载LUKS分区的技巧,命令:

vim /etc/crypttab  

加入4列:

xxx   /dev/sda15   /root/keyfile   luks

(映射名,分区,key文件位置,最后一列就是'luks')
cd /root
dd if=/dev/urandom of=keyfile bs=4k count=1
cryptsetup luksAddKey /dev/sda15 /root/keyfile

最后修改/etc/fstab就能开机自动挂载LUKS了……

或许有人会说,我怎么记得有个加密是"cryptsetup -y create xxx /dev/sda15"这个命令在RHEL6中被移除了,虽然这个加密十分安全,使用单向HASH算法,但是唯一的缺点就是不能改密码!!每次改密码只能tar出来然后格式化再加密再tar回去……

汗,LUKS加密也可以对文件进行加密,但是需要把文件losetup成为一个“假分区”,具体百度能搜到,但是我觉得加密一般文件用gpg或者别的加密工具比较方便,写了这么多废话……对不起……