我如何对 luks 使用公钥加密?

我如何对 luks 使用公钥加密?

我一直在奔跑卢克斯使用以下命令:

$ sudo dd if=/dev/urandom of=/keyfile bs=1024 count=4
$ sudo cryptsetup luksFormat /dev/XXX keyfile
$ sudo cryptsetup luksDump /dev/XXX

它显示以下消息:

Version:        1
Cipher name:    aes
Cipher mode:    cbc-essiv:sha256
Hash spec:      sha1
Payload offset: 4096
MK bits:        256
MK digest:      f3 79 af 60 e6 34 5c 6e 27 6a e4 fe b6 f0 b2 95 8a 85 5c 31 
MK salt:        14 33 6b 95 f8 3d a9 e2 84 67 85 a1 18 be 70 58 
                af 10 10 28 c5 5b d1 1a 31 8e 8f e1 5a 93 51 12 
MK iterations:  45250
UUID:           776d4a78-3487-42df-8d3c-38708fdea60d

Key Slot 0: ENABLED
    Iterations:             181146
    Salt:                   da cf b7 36 fc 98 7c 5c 73 68 ca 44 f4 00 55 52 
                            47 46 68 50 bf aa 2e bb ac 47 83 0f 76 05 a6 05 
    Key material offset:    8
    AF stripes:             4000

根据输出,密码名称澳大利亚并且它不是公钥加密是否仅用于加密主密钥还是加密内容也一样吗?如果它只加密主密钥, 怎么内容加密?

我敢肯定澳大利亚也非常安全。但我认为公钥加密比其他方法更安全,例如澳大利亚。因此,我尝试找出如何使用GPG或任何其他加密方法卢克斯在手册页中密码设置,但我找不到解决方案。

我如何使用公钥加密为了luks格式

答案1

公钥加密实际上只在你想让别人加密发送给你的消息,而你又不想费心秘密地向他们提供你的秘密加密密钥时才有用。因此,你公布了你的公钥,让全世界都可以看到,并加密发送给你的消息,只有你可以阅读。

在你自己的电脑上加密文件对你个人来说没有任何好处。可以假设公钥加密是较少的比传统加密(如 AES、Blowfish、Camellia...)更安全,因为您交出了部分加密信息(公开部分)。但实际上,它们在任何人的一生中都是“牢不可破”的。

你可能不知道公钥加密程序 PGP/GPG 是如何工作的,它传统上加密消息,然后使用公钥加密

以下是一些较老但仍然有效的引言PGPi 文档解释这一点,并说明为什么如果仅比较密钥大小,有人可能会认为一种方法比另一种方法更安全:

PGP 结合了传统和公钥密码学。PGP 是一种混合密码系统。当用户使用 PGP 加密明文时,PGP 首先会压缩明文。数据压缩可节省调制解调器传输时间和磁盘空间,更重要的是,可增强加密安全性。大多数密码分析技术利用在明文中发现的模式来破解密码。压缩可减少明文中的这些模式,从而大大增强对密码分析的抵抗力。(太短而无法压缩或压缩效果不佳的文件不会被压缩。)

然后,PGP 会创建一个会话密钥,这是一个一次性的密钥。此密钥是由鼠标的随机移动和您键入的按键生成的随机数。此会话密钥与一种非常安全、快速的传统加密算法加密明文,结果为密文。数据加密后,会话密钥将加密为接收者的公钥。此公钥加密的会话密钥与密文一起发送给接收者。

...

两种加密方式的结合,将公钥加密的便捷性与常规加密的速度相结合。传统加密比公钥加密快约 1,000 倍公钥加密反过来又为密钥分发和数据传输问题提供了解决方案。结合使用,性能和密钥分发得到改善,同时不会牺牲安全性。

...

然而,公钥大小和传统加密的密钥大小完全无关。传统的 80 位密钥的强度相当于 1024 位公钥。传统的 128 位密钥相当于 3000 位公钥。同样,密钥越大越安全,但每种加密使用的算法都非常不同,因此比较起来就像苹果和橘子一样。


如果您想使用某种涉及 GPG 的方法,使用您的公钥来加密 LUKS 容器的密码或密钥文件,您可以根据需要这样做。但是,如果您的 GPG 私钥被泄露或丢失,您的 LUKS 容器也会被泄露或丢失。

您可以使用 cryptsetup 选择不同的密码,它将使用该密码加密所有数据。请参阅man cryptsetup以下信息:

   --cipher, -c <cipher-spec>
          Set the cipher specification string.

在默认的 Ubuntu 下至少应该支持这些密码:

loop-AES:aes,密钥 256 位
plain:aes-cbc-essiv:sha256,密钥:256 位
LUKS1:aes-xts-plain64,密钥:256 位

相关内容