标签 加密 下的文章

密码学家对加密货币使用“加密”这个词不满意

密码学家门一直 向公众澄清 加密 crypto 是指 密码学 cryptography ”,而不是“ 加密货币 cryptocurrency ”。他们甚至还专门做了一个网站,他们说,“几十年来,‘crypto’一直被用作与密码学有关的事物的速记和前缀。”并且,密码学家们不准备向“一个可能无法在政府监管下生存的概念”让步。而事实上,在加密货币这个词中,前缀 crypto 指的就是密码学。

老王点评:你说的没错,但是我想早晚 crypto 会被更多人特指加密货币。

德国一个州正在将其 25000 台电脑从 Windows 转向 Linux

德国北部的石勒苏益格-荷尔斯泰因州计划 改用开源软件,到 2026 年底,公务员和雇员(包括教师)使用的所有 25000 台计算机上的微软 Office 将被 LibreOffice 取代,Windows 操作系统将被 GNU/Linux 取代。该州议会已经将从专有系统过渡到开放系统的步骤编入法规。他们说,“我们已经在我们的 IT 部门测试了两年的 LibreOffice,我们的经验很清楚:它很有效,” 他们目前正在研究适合他们目的的五个发行版,但还没有选择哪个发行版作为标准。

老王点评:可能已经被德国地方拥抱开源的事迹麻木了,毕竟这不算什么大事是吧,对于 Linux 来说?

《第 27 届互动小说年度大赛》决出胜利者

周六下午,91 名极客在 Twitch 上听取了《第 27 届互动小说年度大赛》的获奖者名单。今年的比赛吸引了 71 个参赛作品,并筹集了约 1 万美元的现金奖励,第一名获得数百美元的奖金,前三分之二的人不等的分配了剩余奖金,最少的得到了 10 美元。此外还有很多有趣的非现金奖。第一名的作品有一个奇怪的标题《然后你来到了一个与前一个不一样的房子》。在这个文本冒险游戏中,你扮演一个少年,他开始出门……玩一个文本冒险游戏《贪吃的精灵:冒险 #1》……

老王点评:真是小众而有趣的活动,你听说过互动小说和文本冒险游戏吗?

情况是这样的。我的系统自带 Windows 10 Pro,并且带有 BitLocker 加密功能。我 甚至在 Windows 启用了 BitLocker 加密的情况下,以双启动模式安装了 Ubuntu

你可以轻松地从 Linux 中访问 Windows 文件。没有什么高科技的东西。只要进入文件管理器,点击通常位于“ 其他位置 Other Locations ”标签下的 Windows 分区。

Mounting Windows partition through the file manager in Linux desktop

对于 BitLocker 加密的 Windows 分区来说,这个过程也不是太复杂。只是当你试图挂载 Windows 分区时,它会要求你输入密码。

Password required for encrypted Windows drive mount in Linux

这是能工作的。在我的情况中,我输入了 48 位 BitLocker 恢复密码,它解密了 Windows 分区,并在带有 GNOME 40 的 Ubuntu 21.10 中毫无问题地挂载了它。

试试你的 BitLocker 密码。如果这不起作用,试试恢复密码。对于普通的 Windows 10 Pro 用户,恢复密码存储在你的微软账户中。

BitLocker Recovery Password in Micrsoft Account

输入恢复密码,你会看到 Windows 分区和它的文件现在可以访问。勾选“ 记住密码 Remember Password ”框也是为了进一步使用而节省时间。

Encrypted Windows partition now mounted in Linux

如果上述方法对你不起作用,或者你不熟悉命令行,还有一个替代方法。

这个方法包括使用一个叫做 Dislocker 的工具。

使用 Dislocker 在 Linux 中挂载 BotLocker 加密的 Windows 分区(命令行方法)

使用 Dislocker 分为两部分。第一部分是解开 BitLocker 的加密,并给出一个名为 dislocker-file 的文件。这基本上是一个虚拟的 NTFS 分区。第二部分是挂载你刚刚得到的虚拟 NTFS 分区。

你需要 BitLocker 密码或恢复密码来解密加密的驱动器。

让我们来看看详细的步骤。

步骤 1:安装 Disclocker

大多数 Linux 发行版的仓库中都有 Dislocker。请使用你的发行版的包管理器来安装它。

在基于 Ubuntu 和 Debian 的发行版上,使用这个命令:

sudo apt install dislocker

Installing Dislocker in Ubuntu

步骤 2:创建挂载点

你需要创建两个挂载点。一个是 Dislocker 生成 dislocker-file 的地方,另一个是将这个 dislocker-file(虚拟文件系统)作为一个回环设备挂载。

没有命名限制,你可以给这些挂载目录起任何你想要的名字。

逐一使用这些命令:

sudo mkdir -p /media/decrypt
sudo mkdir -p /media/windows-mount

Creating mount points for dislocker

步骤 3:获取需要解密的分区信息

你需要 Windows 分区的名称。你可以使用文件资源管理器或像 Gparted 这样的 GUI 工具。

Get the partition name

在我的例子中,Windows 分区是 /dev/nvme0n1p3。对你的系统来说,这将是不同的。你也可以使用命令行来达到这个目的。

sudo lsblk

步骤 4:解密分区并挂载

你已经设置好了一切。现在是真正的部分。

如果你有 BitLocker 密码,以这种方式使用 dislocker 命令(用实际值替换 <partition_name><password>):

sudo dislocker <partition_name> -u<password> -- /media/decrypt

如果你只有恢复密码,请以这种方式使用该命令用实际值替换 <partition_name><password>):

sudo dislocker <partition_name> -p<recovery_password> -- /media/decrypt

在解密该分区时,应该不会花很长时间。你应该在指定的挂载点看到 dislocker-file,在我们的例子中是 /media/decrypt。现在挂载这个 dislocker-file:

sudo mount -o loop /media/decrypt/dislocker-file /media/windows-mount

完成了。你的 BitLocker 加密的 Windows 分区已经被解密并挂载到 Linux 中。你也可以从文件资源管理器中访问它。

Mounting Dislocker decrypted Windows partition with file manager

文件系统类型错误的故障排除提示

如果你遇到这样的错误:

mount: /media/windows-mount: wrong fs type, bad option, bad superblock on /dev/loop35, missing codepage or helper program, or other error.

你应该在挂载时指定文件系统。

对于NTFS,使用:

sudo mount -t ntfs-3g -o loop /media/decrypt/dislocker-file /media/windows-mount

对于 exFAT,使用:

sudo mount -t exFAT-fuse -o loop /media/decrypt/dislocker-file /media/windows-mount

解除对 Windows 分区的挂载

你可以从文件管理器中取消挂载的分区。只要点击名为 windows-mount 的分区旁边的卸载符号

或者,你可以使用卸载命令:

sudo umount /media/decrypt
sudo umount /media/windows-mount

我希望这对你有帮助。如果你还有问题或建议,请在评论中告诉我。


via: https://itsfoss.com/mount-encrypted-windows-partition-linux/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

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

age 是一个简单的、易于使用的工具,允许你用一个密码来加密和解密文件。

 title=

文件的保护和敏感文档的安全加密是用户长期以来关心的问题。即使越来越多的数据被存放在网站和云服务上,并由具有越来越安全和高强度密码的用户账户来保护,但我们能够在自己的文件系统中存储敏感数据仍有很大的价值,特别是我们能够快速和容易地加密这些数据时。

age 能帮你这样做。它是一个小型且易于使用的工具,允许你用一个密码加密一个文件,并根据需要解密。

安装 age

age 可以从众多 Linux 软件库中 安装

在 Fedora 上安装它:

$ sudo dnf install age -y

在 macOS 上,使用 MacPortsHomebrew 来安装。在 Windows 上,使用 Chocolatey 来安装。

用 age 加密和解密文件

age 可以用公钥或用户自定义密码来加密和解密文件。

在 age 中使用公钥

首先,生成一个公钥并写入 key.txt 文件:

$ age-keygen -o key.txt
Public key: age16frc22wz6z206hslrjzuv2tnsuw32rk80pnrku07fh7hrmxhudawase896m9

使用公钥加密

要用你的公钥加密一个文件:

$ touch mypasswds.txt | age -r \
    ageage16frc22wz6z206hslrjzuv2tnsuw32rk80pnrku07fh7hrmxhudawase896m9 \
    > mypass.tar.gz.age

在这个例子中,我使用生成的公钥加密文件 mypasswds.txt,保存在名为 mypass.tar.gz.age 的加密文件中。

用公钥解密

如需解密加密文件,使用 age 命令和 --decrypt 选项:

$ age --decrypt -i key.txt -o mypass.tar.gz mypass.tar.gz.age

在这个例子中,age 使用存储在 key.text 中的密钥,并解密了我在上一步创建的加密文件。

使用密码加密

不使用公钥的情况下对文件进行加密被称为对称加密。它允许用户设置密码来加密和解密一个文件。要做到这一点:

$ age --passphrase --output mypasswd-encrypted.txt mypasswd.txt
Enter passphrase (leave empty to autogenerate a secure one): 
Confirm passphrase:

在这个例子中,age 提示你输入一个密码,它将通过这个密码对输入文件 mypasswd.txt 进行加密,并生成加密文件 mypasswd-encrypted.txt

使用密码解密

如需将用密码加密的文件解密,可以使用 age 命令和 --decrypt 选项:

$ age --decrypt --output passwd-decrypt.txt mypasswd-encrypted.txt

在这个例子中,age 提示你输入密码,只要你提供的密码与加密时设置的密码一致,age 随后将 mypasswd-encrypted.txt 加密文件的内容解密为 passwd-decrypt.txt

不要丢失你的密钥

无论你是使用密码加密还是公钥加密,你都\_不能\_丢失加密数据的凭证。根据设计,如果没有用于加密的密钥,通过 age 加密的文件是不能被解密的。所以,请备份你的公钥,并记住这些密码!

轻松实现加密

age 是一个真正强大的工具。我喜欢把我的敏感文件,特别是税务记录和其他档案数据,加密到 .tz 文件中,以便以后访问。age 是用户友好的,使其非常容易随时加密。


via: https://opensource.com/article/21/7/linux-age

作者:Sumantro Mukherjee 选题:lujun9972 译者:geekpi 校对:turbokernel

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

以打击盗版为目标的恶意程序

安全研究人员发现了一种不同寻常的恶意程序,与其它专注于偷密码、搞破坏、或勒索赎金的恶意软件不同,它被设计为专门打击软件盗版。这个被称为 Vigilante 的恶意程序通过盗版网站传播,将自己伪装成各种软件包的盗版副本。受害者下载和执行后会将执行的文件名和 IP 地址发送给攻击者控制的服务器,然后修改主机的 hosts 文件将一千多个盗版网站的域名指向本地地址 127.0.0.1。被屏蔽的盗版网站包括了海盗湾 thepiratebay.com 等。受害者如果不手动修改 Hosts 文件删除相关条目的话将会无法再访问盗版网站。

真是一种“奇特”的恶意程序,这可以算是“正义的铁拳”么?

macOS Monterey 不再内置 PHP

自 OS X 10.0.0 版本开始,PHP 就内置在系统中,CGI 或 CLI 默认都可使用。而在 macOS Monterey 中将不再内置 PHP,在 Mac 平台上使用该编程语言的开发人员今后必须要自己安装。

在 macOS 系统中,PHP 并非是唯一集成的编程语言,在 macOS Monterey 中仍然配备了 2.7.16 的 Python 环境。不过 macOS 未来应该并不会像 PHP 一样移除 Python,而是会升级到 Python 3。

我觉得是 PHP 对 macOS 环境的作用并不大了,毕竟一般人不会在自己的 macOS 里面运行 Web 服务器。

谷歌开源全同态加密(FHE)工具包

谷歌开源了一组 C++ 库,用于在现代应用中实现全同态加密(FHE)。

全同态加密 Fully homomorphic encryption ,或简称为同态加密,是一种数据加密形式,它允许用户/应用在不解密的情况下对加密数据进行数学计算,从而保持数据的隐私不受侵犯。虽然同态加密的概念早在 1978 年就已经存在,在 2009 年首次在实践中实现,但由于其复杂性、高级加密技术以及缺乏开源代码和公共文档,一直以来它并没有在软件中被广泛采用。

同态加密在如今个人隐私数据越发得到重视的时候,非常有意义,这是一个值得关注的方向。

OpenSSL 是一个实用工具,它可以确保其他人员无法打开你的敏感和机密消息。

 title=

加密是对消息进行编码的一种方法,这样可以保护消息的内容免遭他人窥视。一般有两种类型:

  1. 密钥加密或对称加密
  2. 公钥加密或非对称加密

密钥加密 secret-key encryption 使用相同的密钥进行加密和解密,而 公钥加密 public-key encryption 使用不同的密钥进行加密和解密。每种方法各有利弊。密钥加密速度更快,而公钥加密更安全,因为它解决了安全共享密钥的问题,将它们结合在一起可以最大限度地利用每种类型的优势。

公钥加密

公钥加密使用两组密钥,称为密钥对。一个是公钥,可以与你想要秘密通信的任何人自由共享。另一个是私钥,应该是一个秘密,永远不会共享。

公钥用于加密。如果某人想与你交流敏感信息,你可以将你的公钥发送给他们,他们可以使用公钥加密消息或文件,然后再将其发送给你。私钥用于解密。解密发件人加密的消息的唯一方法是使用私钥。因此,它们被称为“密钥对”,它们是相互关联的。

如何使用 OpenSSL 加密文件

OpenSSL 是一个了不起的工具,可以执行各种任务,例如加密文件。本文使用安装了 OpenSSL 的 Fedora 计算机。如果你的机器上没有,则可以使用软件包管理器进行安装:

alice $ cat /etc/fedora-release
Fedora release 33 (Thirty Three)
alice $
alice $ openssl version
OpenSSL 1.1.1i FIPS  8 Dec 2020
alice $

要探索文件加密和解密,假如有两个用户 Alice 和 Bob,他们想通过使用 OpenSSL 交换加密文件来相互通信。

步骤 1:生成密钥对

在加密文件之前,你需要生成密钥对。你还需要一个 密码短语 passphrase ,每当你使用 OpenSSL 时都必须使用该密码短语,因此务必记住它。

Alice 使用以下命令生成她的一组密钥对:

alice $ openssl genrsa -aes128 -out alice_private.pem 1024

此命令使用 OpenSSL 的 genrsa 命令生成一个 1024 位的公钥/私钥对。这是可以的,因为 RSA 算法是不对称的。它还使用了 aes128 对称密钥算法来加密 Alice 生成的私钥。

输入命令后,OpenSSL 会提示 Alice 输入密码,每次使用密钥时,她都必须输入该密码:

alice $ openssl genrsa -aes128 -out alice_private.pem 1024
Generating RSA private key, 1024 bit long modulus (2 primes)
..........+++++
..................................+++++
e is 65537 (0x010001)
Enter pass phrase for alice_private.pem:
Verifying - Enter pass phrase for alice_private.pem:
alice $
alice $
alice $ ls -l alice_private.pem
-rw-------. 1 alice alice 966 Mar 22 17:44 alice_private.pem
alice $
alice $ file alice_private.pem
alice_private.pem: PEM RSA private key
alice $

Bob 使用相同的步骤来创建他的密钥对:

bob $ openssl genrsa -aes128 -out bob_private.pem 1024
Generating RSA private key, 1024 bit long modulus (2 primes)
..................+++++
............................+++++
e is 65537 (0x010001)
Enter pass phrase for bob_private.pem:
Verifying - Enter pass phrase for bob_private.pem:
bob $
bob $ ls -l bob_private.pem
-rw-------. 1 bob bob 986 Mar 22 13:48 bob_private.pem
bob $
bob $ file bob_private.pem
bob_private.pem: PEM RSA private key
bob $

如果你对密钥文件感到好奇,可以打开命令生成的 .pem 文件,但是你会看到屏幕上的一堆文本:

alice $ head alice_private.pem
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,E26FAC1F143A30632203F09C259200B9

pdKj8Gm5eeAOF0RHzBx8l1tjmA1HSSvy0RF42bOeb7sEVZtJ6pMnrJ26ouwTQnkL
JJjUVPPHoKZ7j4QpwzbPGrz/hVeMXVT/y33ZEEA+3nrobwisLKz+Q+C9TVJU3m7M
/veiBO9xHMGV01YBNeic7MqXBkhIrNZW6pPRfrbjsBMBGSsL8nwJbb3wvHhzPkeM
e+wtt9S5PWhcnGMj3T+2mtFfW6HWpd8Kdp60z7Nh5mhA9+5aDWREfJhJYzl1zfcv
Bmxjf2wZ3sFJNty+sQVajYfk6UXMyJIuWgAjnqjw6c3vxQi0KE3NUNZYO93GQgEF
pyAnN9uGUTBCDYeTwdw8TEzkyaL08FkzLfFbS2N9BDksA3rpI1cxpxRVFr9+jDBz
alice $

要查看密钥的详细信息,可以使用以下 OpenSSL 命令打开 .pem 文件并显示内容。你可能想知道在哪里可以找到另一个配对的密钥,因为这是单个文件。你观察的很细致,获取公钥的方法如下:

alice $ openssl rsa -in alice_private.pem -noout -text
Enter pass phrase for alice_private.pem:
RSA Private-Key: (1024 bit, 2 primes)
modulus:
    00:bd:e8:61:72:f8:f6:c8:f2:cc:05:fa:07:aa:99:
    47:a6:d8:06:cf:09:bf:d1:66:b7:f9:37:29:5d:dc:
    c7:11:56:59:d7:83:b4:81:f6:cf:e2:5f:16:0d:47:
    81:fe:62:9a:63:c5:20:df:ee:d3:95:73:dc:0a:3f:
    65:d3:36:1d:c1:7d:8b:7d:0f:79:de:80:fc:d2:c0:
    e4:27:fc:e9:66:2d:e2:7e:fc:e6:73:d1:c9:28:6b:
    6a:8a:e8:96:9d:65:a0:8a:46:e0:b8:1f:b0:48:d4:
    db:d4:a3:7f:0d:53:36:9a:7d:2e:e7:d8:f2:16:d3:
    ff:1b:12:af:53:22:c0:41:51
publicExponent: 65537 (0x10001)

<< 截断 >>

exponent2:
    6e:aa:8c:6e:37:d0:57:37:13:c0:08:7e:75:43:96:
    33:01:99:25:24:75:9c:0b:45:3c:a2:39:44:69:84:
    a4:64:48:f4:5c:bc:40:40:bf:84:b8:f8:0f:1d:7b:
    96:7e:16:00:eb:49:da:6b:20:65:fc:a9:20:d9:98:
    76:ca:59:e1
coefficient:
    68:9e:2e:fa:a3:a4:72:1d:2b:60:61:11:b1:8b:30:
    6e:7e:2d:f9:79:79:f2:27:ab:a0:a0:b6:45:08:df:
    12:f7:a4:3b:d9:df:c5:6e:c7:e8:81:29:07:cd:7e:
    47:99:5d:33:8c:b7:fb:3b:a9:bb:52:c0:47:7a:1c:
    e3:64:90:26
alice $

步骤 2:提取公钥

注意,公钥是你可以与他人自由共享的密钥,而你必须将私钥保密。因此,Alice 必须提取她的公钥,并将其保存到文件中:

alice $ openssl rsa -in alice_private.pem -pubout > alice_public.pem
Enter pass phrase for alice_private.pem:
writing RSA key
alice $
alice $ ls -l *.pem
-rw-------. 1 alice alice 966 Mar 22 17:44 alice_private.pem
-rw-rw-r--. 1 alice alice 272 Mar 22 17:47 alice_public.pem
alice $

你可以使用与之前相同的方式查看公钥详细信息,但是这次,输入公钥 .pem 文件:

alice $
alice $ openssl rsa -in alice_public.pem -pubin -text -noout
RSA Public-Key: (1024 bit)
Modulus:
    00:bd:e8:61:72:f8:f6:c8:f2:cc:05:fa:07:aa:99:
    47:a6:d8:06:cf:09:bf:d1:66:b7:f9:37:29:5d:dc:
    c7:11:56:59:d7:83:b4:81:f6:cf:e2:5f:16:0d:47:
    81:fe:62:9a:63:c5:20:df:ee:d3:95:73:dc:0a:3f:
$

Bob 可以按照相同的过程来提取他的公钥并将其保存到文件中:

bob $ openssl rsa -in bob_private.pem -pubout > bob_public.pem
Enter pass phrase for bob_private.pem:
writing RSA key
bob $
bob $ ls -l *.pem
-rw-------. 1 bob bob 986 Mar 22 13:48 bob_private.pem
-rw-r--r--. 1 bob bob 272 Mar 22 13:51 bob_public.pem
bob $

步骤 3:交换公钥

这些公钥在 Alice 和 Bob 彼此交换之前没有太大用处。有几种共享公钥的方法,例如使用 scp 命令将密钥复制到彼此的工作站。

将 Alice 的公钥发送到 Bob 的工作站:

alice $ scp alice_public.pem bob@bob-machine-or-ip:/path/

将 Bob 的公钥发送到 Alice 的工作站:

bob $ scp bob_public.pem alice@alice-machine-or-ip:/path/

现在,Alice 有了 Bob 的公钥,反之亦然:

alice $ ls -l bob_public.pem
-rw-r--r--. 1 alice alice 272 Mar 22 17:51 bob_public.pem
alice $
bob $ ls -l alice_public.pem
-rw-r--r--. 1 bob bob 272 Mar 22 13:54 alice_public.pem
bob $

步骤 4:使用公钥交换加密的消息

假设 Alice 需要与 Bob 秘密交流。她将秘密信息写入文件中,并将其保存到 top_secret.txt 中。由于这是一个普通文件,因此任何人都可以打开它并查看其内容,这里并没有太多保护:

alice $
alice $ echo "vim or emacs ?" > top_secret.txt
alice $
alice $ cat top_secret.txt
vim or emacs ?
alice $

要加密此秘密消息,Alice 需要使用 openssls -encrypt 命令。她需要为该工具提供三个输入:

  1. 秘密消息文件的名称
  2. Bob 的公钥(文件)
  3. 加密后新文件的名称
alice $ openssl rsautl -encrypt -inkey bob_public.pem -pubin -in top_secret.txt -out top_secret.enc
alice $
alice $ ls -l top_secret.*
-rw-rw-r--. 1 alice alice 128 Mar 22 17:54 top_secret.enc
-rw-rw-r--. 1 alice alice  15 Mar 22 17:53 top_secret.txt
alice $
alice $

加密后,原始文件仍然是可见的,而新创建的加密文件在屏幕上看起来像乱码。这样,你可以确定秘密消息已被加密:

alice $ cat top_secret.txt
vim or emacs ?
alice $
alice $ cat top_secret.enc
�s��uM)M&>��N��}dmCy92#1X�q?��v���M��@��E�~��1�k~&PU�VhHL�@^P��(��zi�M�4p�e��g+R�1�Ԁ���s�������q_8�lr����C�I-��alice $
alice $
alice $
alice $ hexdump -C ./top_secret.enc
00000000  9e 73 12 8f e3 75 4d 29  4d 26 3e bf 80 4e a0 c5  |.s...uM)M&>..N..|
00000010  7d 64 6d 43 79 39 32 23  31 58 ce 71 f3 ba 95 a6  |}dmCy92#1X.q....|
00000020  c0 c0 76 17 fb f7 bf 4d  ce fc 40 e6 f4 45 7f db  |[email protected]..|
00000030  7e ae c0 31 f8 6b 10 06  7e 26 50 55 b5 05 56 68  |~..1.k..~&PU..Vh|
00000040  48 4c eb 40 5e 50 fe 19  ea 28 a8 b8 7a 13 69 d7  |HL.@^P...(..z.i.|
00000050  4d b0 34 70 d8 65 d5 07  95 67 2b 52 ea 31 aa d4  |M.4p.e...g+R.1..|
00000060  80 b3 a8 ec a1 73 ed a7  f9 17 c3 13 d4 fa c1 71  |.....s.........q|
00000070  5f 38 b9 6c 07 72 81 a6  fe af 43 a6 49 2d c4 ee  |_8.l.r....C.I-..|
00000080
alice $
alice $ file top_secret.enc
top_secret.enc: data
alice $

删除秘密消息的原始文件是安全的,这样确保任何痕迹都没有:

alice $ rm -f top_secret.txt

现在,Alice 需要再次使用 scp 命令将此加密文件通过网络发送给 Bob 的工作站。注意,即使文件被截获,其内容也会是加密的,因此内容不会被泄露:

alice $  scp top_secret.enc bob@bob-machine-or-ip:/path/

如果 Bob 使用常规方法尝试打开并查看加密的消息,他将无法看懂该消息:

bob $ ls -l top_secret.enc
-rw-r--r--. 1 bob bob 128 Mar 22 13:59 top_secret.enc
bob $
bob $ cat top_secret.enc
�s��uM)M&>��N��}dmCy92#1X�q?��v���M��@��E�~��1�k~&PU�VhHL�@^P��(��zi�M�4p�e��g+R�1�Ԁ���s�������q_8�lr����C�I-��bob $
bob $
bob $ hexdump -C top_secret.enc
00000000  9e 73 12 8f e3 75 4d 29  4d 26 3e bf 80 4e a0 c5  |.s...uM)M&>..N..|
00000010  7d 64 6d 43 79 39 32 23  31 58 ce 71 f3 ba 95 a6  |}dmCy92#1X.q....|
00000020  c0 c0 76 17 fb f7 bf 4d  ce fc 40 e6 f4 45 7f db  |[email protected]..|
00000030  7e ae c0 31 f8 6b 10 06  7e 26 50 55 b5 05 56 68  |~..1.k..~&PU..Vh|
00000040  48 4c eb 40 5e 50 fe 19  ea 28 a8 b8 7a 13 69 d7  |HL.@^P...(..z.i.|
00000050  4d b0 34 70 d8 65 d5 07  95 67 2b 52 ea 31 aa d4  |M.4p.e...g+R.1..|
00000060  80 b3 a8 ec a1 73 ed a7  f9 17 c3 13 d4 fa c1 71  |.....s.........q|
00000070  5f 38 b9 6c 07 72 81 a6  fe af 43 a6 49 2d c4 ee  |_8.l.r....C.I-..|
00000080
bob $

步骤 5:使用私钥解密文件

Bob 需要使用 OpenSSL 来解密消息,但是这次使用的是 -decrypt 命令行参数。他需要向工具程序提供以下信息:

  1. 加密的文件(从 Alice 那里得到)
  2. Bob 的私钥(用于解密,因为文件是用 Bob 的公钥加密的)
  3. 通过重定向保存解密输出的文件名
bob $ openssl rsautl -decrypt -inkey bob_private.pem -in top_secret.enc > top_secret.txt
Enter pass phrase for bob_private.pem:
bob $

现在,Bob 可以阅读 Alice 发送给他的秘密消息:

bob $ ls -l top_secret.txt
-rw-r--r--. 1 bob bob 15 Mar 22 14:02 top_secret.txt
bob $
bob $ cat top_secret.txt
vim or emacs ?
bob $

Bob 需要回复 Alice,因此他将秘密回复写在一个文件中:

bob $ echo "nano for life" > reply_secret.txt
bob $
bob $ cat reply_secret.txt
nano for life
bob $

步骤 6:使用其他密钥重复该过程

为了发送消息,Bob 采用和 Alice 相同的步骤,但是由于该消息是发送给 Alice 的,因此他需要使用 Alice 的公钥来加密文件:

bob $ openssl rsautl -encrypt -inkey alice_public.pem -pubin -in reply_secret.txt -out reply_secret.enc
bob $
bob $ ls -l reply_secret.enc
-rw-r--r--. 1 bob bob 128 Mar 22 14:03 reply_secret.enc
bob $
bob $ cat reply_secret.enc
�F݇��.4"f�1��\��{o԰$�M��I{5�|�\�l͂�e��Y�V��{�|!$c^a
                                                 �*Ԫ\vQ�Ϡ9����'��ٮsP��'��Z�1W�n��k���J�0�I;P8������&:bob $
bob $
bob $ hexdump -C ./reply_secret.enc
00000000  92 46 dd 87 04 bc a7 2e  34 22 01 66 1a 13 31 db  |.F......4".f..1.|
00000010  c4 5c b4 8e 7b 6f d4 b0  24 d2 4d 92 9b 49 7b 35  |.\..{o..$.M..I{5|
00000020  da 7c ee 5c bb 6c cd 82  f1 1b 92 65 f1 8d f2 59  |.|.\.l.....e...Y|
00000030  82 56 81 80 7b 89 07 7c  21 24 63 5e 61 0c ae 2a  |.V..{..|!$c^a..*|
00000040  d4 aa 5c 76 51 8d cf a0  39 04 c1 d7 dc f0 ad 99  |..\vQ...9.......|
00000050  27 ed 8e de d9 ae 02 73  50 e0 dd 27 13 ae 8e 5a  |'......sP..'...Z|
00000060  12 e4 9a 31 57 b3 03 6e  dd e1 16 7f 6b c0 b3 8b  |...1W..n....k...|
00000070  4a cf 30 b8 49 3b 50 38  e0 9f 84 f6 83 da 26 3a  |J.0.I;P8......&:|
00000080
bob $
bob $ # remove clear text secret message file
bob $ rm -f reply_secret.txt

Bob 通过 scp 将加密的文件发送至 Alice 的工作站:

$ scp reply_secret.enc alice@alice-machine-or-ip:/path/

如果 Alice 尝试使用常规工具去阅读加密的文本,她将无法理解加密的文本:

alice $
alice $ ls -l reply_secret.enc
-rw-r--r--. 1 alice alice 128 Mar 22 18:01 reply_secret.enc
alice $
alice $ cat reply_secret.enc
�F݇��.4"f�1��\��{o԰$�M��I{5�|�\�l͂�e��Y�V��{�|!$c^a
                                                 �*Ԫ\vQ�Ϡ9����'��ٮsP��'��Z�1W�n��k���J�0�I;P8������&:alice $
alice $
alice $
alice $ hexdump -C ./reply_secret.enc
00000000  92 46 dd 87 04 bc a7 2e  34 22 01 66 1a 13 31 db  |.F......4".f..1.|
00000010  c4 5c b4 8e 7b 6f d4 b0  24 d2 4d 92 9b 49 7b 35  |.\..{o..$.M..I{5|
00000020  da 7c ee 5c bb 6c cd 82  f1 1b 92 65 f1 8d f2 59  |.|.\.l.....e...Y|
00000030  82 56 81 80 7b 89 07 7c  21 24 63 5e 61 0c ae 2a  |.V..{..|!$c^a..*|
00000040  d4 aa 5c 76 51 8d cf a0  39 04 c1 d7 dc f0 ad 99  |..\vQ...9.......|
00000050  27 ed 8e de d9 ae 02 73  50 e0 dd 27 13 ae 8e 5a  |'......sP..'...Z|
00000060  12 e4 9a 31 57 b3 03 6e  dd e1 16 7f 6b c0 b3 8b  |...1W..n....k...|
00000070  4a cf 30 b8 49 3b 50 38  e0 9f 84 f6 83 da 26 3a  |J.0.I;P8......&:|
00000080
alice $

所以,她使用 OpenSSL 解密消息,只不过这次她提供了自己的私钥并将输出保存到文件中:

alice $ openssl rsautl -decrypt -inkey alice_private.pem -in reply_secret.enc > reply_secret.txt
Enter pass phrase for alice_private.pem:
alice $
alice $ ls -l reply_secret.txt
-rw-rw-r--. 1 alice alice 14 Mar 22 18:02 reply_secret.txt
alice $
alice $ cat reply_secret.txt
nano for life
alice $

了解 OpenSSL 的更多信息

OpenSSL 在加密界是真正的瑞士军刀。除了加密文件外,它还可以执行许多任务,你可以通过访问 OpenSSL 文档页面来找到使用它的所有方式,包括手册的链接、 《OpenSSL Cookbook》、常见问题解答等。要了解更多信息,尝试使用其自带的各种加密算法,看看它是如何工作的。


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

作者:Gaurav Kamathe 选题:lujun9972 译者:MjSeven 校对:wxy

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

Stratis 在其 官方网站 上被描述为“易于使用的 Linux 本地存储管理”。请看这个 短视频,快速演示基础知识。该视频是在 Red Hat Enterprise Linux 8 系统上录制的。视频中显示的概念也适用于 Fedora 中的 Stratis。

Stratis 2.1 版本引入了对加密的支持。继续阅读以了解如何在 Stratis 中开始加密。

先决条件

加密需要 Stratis 2.1 或更高版本。这篇文章中的例子使用的是 Fedora 33 的预发布版本。Stratis 2.1 将用在 Fedora 33 的最终版本中。

你还需要至少一个可用的块设备来创建一个加密池。下面的例子是在 KVM 虚拟机上完成的,虚拟磁盘驱动器为 5GB(/dev/vdb)。

在内核密钥环中创建一个密钥

Linux 内核 密钥环 keyring 用于存储加密密钥。关于内核密钥环的更多信息,请参考 keyrings 手册页(man keyrings)。

使用 stratis key set 命令在内核钥匙圈中设置密钥。你必须指定从哪里读取密钥。要从标准输入中读取密钥,使用 -capture-key 选项。要从文件中读取密钥,使用 -keyfile-path <file> 选项。最后一个参数是一个密钥描述。它将稍后你创建加密的 Stratis 池时使用。

例如,要创建一个描述为 pool1key 的密钥,并从标准输入中读取密钥,可以输入:

# stratis key set --capture-key pool1key
Enter desired key data followed by the return key:

该命令提示我们输入密钥数据/密码,然后密钥就创建在内核密钥环中了。

要验证密钥是否已被创建,运行 stratis key list

# stratis key list
Key Description
pool1key

这将验证是否创建了 pool1key。请注意,这些密钥不是持久的。如果主机重启,在访问加密的 Stratis 池之前,需要再次提供密钥(此过程将在后面介绍)。

如果你有多个加密池,它们可以有一个单独的密钥,也可以共享同一个密钥。

也可以使用以下 keyctl 命令查看密钥:

# keyctl get_persistent @s
318044983
# keyctl show
Session Keyring
 701701270 --alswrv      0     0  keyring: _ses
 649111286 --alswrv      0 65534   \_ keyring: _uid.0
 318044983 ---lswrv      0 65534   \_ keyring: _persistent.0
1051260141 --alswrv      0     0       \_ user: stratis-1-key-pool1key

创建加密的 Stratis 池

现在已经为 Stratis 创建了一个密钥,下一步是创建加密的 Stratis 池。加密池只能在创建池时进行。目前不可能对现有的池进行加密。

使用 stratis pool create 命令创建一个池。添加 -key-desc 和你在上一步提供的密钥描述(pool1key)。这将向 Stratis 发出信号,池应该使用提供的密钥进行加密。下面的例子是在 /dev/vdb 上创建 Stratis 池,并将其命名为 pool1。确保在你的系统中指定一个空的/可用的设备。

# stratis pool create --key-desc pool1key pool1 /dev/vdb

你可以使用 stratis pool list 命令验证该池是否已经创建:

# stratis pool list
Name                     Total Physical   Properties
pool1   4.98 GiB / 37.63 MiB / 4.95 GiB      ~Ca, Cr

在上面显示的示例输出中,~Ca 表示禁用了缓存(~ 否定了该属性)。Cr 表示启用了加密。请注意,缓存和加密是相互排斥的。这两个功能不能同时启用。

接下来,创建一个文件系统。下面的例子演示了创建一个名为 filesystem1 的文件系统,将其挂载在 /filesystem1 挂载点上,并在新文件系统中创建一个测试文件:

# stratis filesystem create pool1 filesystem1
# mkdir /filesystem1
# mount /stratis/pool1/filesystem1 /filesystem1
# cd /filesystem1
# echo "this is a test file" > testfile

重启后访问加密池

当重新启动时,你会发现 Stratis 不再显示你的加密池或它的块设备:

# stratis pool list
Name   Total Physical   Properties
# stratis blockdev list
Pool Name   Device Node   Physical Size   Tier

要访问加密池,首先要用之前使用的相同的密钥描述和密钥数据/口令重新创建密钥:

# stratis key set --capture-key pool1key
Enter desired key data followed by the return key:

接下来,运行 stratis pool unlock 命令,并验证现在可以看到池和它的块设备:

# stratis pool unlock
# stratis pool list
Name                      Total Physical   Properties
pool1   4.98 GiB / 583.65 MiB / 4.41 GiB      ~Ca, Cr
# stratis blockdev list
Pool Name   Device Node   Physical Size   Tier
pool1       /dev/dm-2          4.98 GiB   Data

接下来,挂载文件系统并验证是否可以访问之前创建的测试文件:

# mount /stratis/pool1/filesystem1 /filesystem1/
# cat /filesystem1/testfile
this is a test file

使用 systemd 单元文件在启动时自动解锁 Stratis 池

可以在启动时自动解锁 Stratis 池,无需手动干预。但是,必须有一个包含密钥的文件。在某些环境下,将密钥存储在文件中可能会有安全问题。

下图所示的 systemd 单元文件提供了一个简单的方法来在启动时解锁 Stratis 池并挂载文件系统。欢迎提供更好的/替代方法的反馈。你可以在文章末尾的评论区提供建议。

首先用下面的命令创建你的密钥文件。确保用之前输入的相同的密钥数据/密码来代替passphrase

# echo -n passphrase > /root/pool1key

确保该文件只能由 root 读取:

# chmod 400 /root/pool1key
# chown root:root /root/pool1key

/etc/systemd/system/stratis-filesystem1.service 创建包含以下内容的 systemd 单元文件:

[Unit]
Description = stratis mount pool1 filesystem1 file system
After = stratisd.service

[Service]
ExecStartPre=sleep 2
ExecStartPre=stratis key set --keyfile-path /root/pool1key pool1key
ExecStartPre=stratis pool unlock
ExecStartPre=sleep 3
ExecStart=mount /stratis/pool1/filesystem1 /filesystem1
RemainAfterExit=yes

[Install]
WantedBy = multi-user.target

接下来,启用服务,使其在启动时运行:

# systemctl enable stratis-filesystem1.service

现在重新启动并验证 Stratis 池是否已自动解锁,其文件系统是否已挂载。

结语

在今天的环境中,加密是很多人和组织的必修课。本篇文章演示了如何在 Stratis 2.1 中启用加密功能。


via: https://fedoramagazine.org/getting-started-with-stratis-encryption/

作者:briansmith 选题:lujun9972 译者:wxy 校对:wxy

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