当前位置: 首页 > 科技观察

如何破解LUKS加密

时间:2023-03-22 15:16:06 科技观察

LUKS(LinuxUnifiedKeySetup)是Linux硬盘加密的标准。通过提供标准的磁盘格式,它不仅促进了发行版之间的兼容性,而且还提供了对多个用户密码的安全管理。LUKS加密广泛用于各种Linux发行版,以保护磁盘和创建加密容器。作为独立于平台的开源规范,LUKS可以看作是磁盘加密的典型实现。LUKS提供多种加密算法、加密模式和哈希函数可供选择,是最难破解的硬盘加密系统之一。在本文中,我们将介绍如何在Windows中处理LUKS加密,以及如何通过分布式密码破解来破解它。磁盘加密基础所有磁盘加密工具都依赖对称加密来加密数据,而MicrosoftBitLocker默认使用128位AES密钥,而主要的磁盘加密工具通常依赖使用256位密钥的硬件加速AES加密。一些磁盘加密工具提供加密算法选择,最受支持的是VeraCrypt,它提供大约15种对称加密选项。对称加密密钥是通过使用密钥生成函数(KDF)从用户密码(或其他数据)生成的。KDF使用用户输入的单向转换(哈希函数)来生成二进制加密密钥或解密用于解密实际对称加密密钥的中间密钥。使用不同的哈希函数和大量的哈希迭代来减缓潜在的暴力攻击。在破解加密容器时,您必须知道加密算法、哈希函数和哈希迭代次数的确切组合。错误的选择实际上会使您成功恢复的机会无效,即使您无意中找到了正确的密码。LUKS磁盘加密LUKS是一种独立于平台的磁盘加密规范,最初是为Linux操作系统开发的。LUKS是Linux中磁盘加密的事实标准,它促进了各种Linux发行版之间的兼容性,并提供了对多用户的支持。密码的安全管理。如今,LUKS被广泛用于台式机和笔记本电脑上的几乎所有Linux发行版中。它也是网络附加存储(NAS)设备中流行的加密格式,尤其是QNAP制造的设备。除了全盘加密之外,LUKS还可以用于创建和运行加密容器,其方式类似于其他加密容器(例如VeraCrypt),加密容器具有与LUKS全盘加密相同级别的保护。LUKS为用户提供了多种加密算法、哈希函数和加密模式的选择,从而提供了大约45种可能的组合。LUKS加密算法LUKS支持多种加密算法、加密模式和哈希函数的组合,包括:AdvancedEncryptionStandard(AES)Serpent加密算法Twofish加密算法CAST-128加密算法CAST-256加密算法AES是唯一的硬件加速加密算法是迄今为止三者中最常见的,尤其是在企业环境和网络附加存储(NAS)设备中使用时。AES加密在具有AES加密加速功能的芯片组上使用时可提供最高的流密码性能,例如IntelCPU中的AES-NI指令集。Serpent和Twofish可以由用户在创建加密卷时手动指定。LUKS支持以下加密模式:ECB(块加密模式之一)CBC-PLAIN64CBC-ESSIV:hashXTS-PLAIN64在设置加密卷时,不同的Linux发行版可能使用不同的默认设置。例如,RedHatLinux使用带有256位AES密钥的cbc-essiv:sha256,这是许多流行的Linux发行版的默认组合。如果本文使用的破解工具支持CBC-PLAIN64、CBC-ESSIV:SHA256和XTS-PLAIN64加密模式。LUKS哈希函数在磁盘加密中,哈希函数用作密钥生成函数(KDF)的一部分。KDF用于从用户提供的输入(通常是基于文本的密码)导出二进制加密密钥,LUKS规范支持以下哈希函数:SHA-1SHA-256SHA-512RIPEMD160Whirlpool(基于分组密码的哈希算法)WHIRLPOOL支持不是规范的一部分,但本文使用的破解工具支持这个哈希函数以及四个“官方”函数。默认情况下,大多数Linux发行版使用SHA-256作为哈希函数。LUKS默认加密设置虽然每个Linux发行版的维护者和嵌入式Linux的硬件制造商都可以自由选择他们自己的默认加密设置,但是带有256位对称加密密钥的aes-cbc-essiv:sha256是最常见的默认加密设置。含义如下:AES——加密算法为AES(默认使用256位密钥);CBC——密码块链接加密模式;ESSIV-加密盐扇区初始化向量,这个IV应该用在CBC模式密码中;SHA-256-使用32位字计算的安全哈希算法,这是CBC模式下密码的默认哈希函数。非默认加密设置用户在加密磁盘时可以指定默认以外的其他解密设置,与TrueCrypt/VeraCrypt不同,LUKS确实在加密元数据中存储了有关所选加密设置的信息,可以在启动破解之前检测到加密设置。ElcomsoftDistributedPasswordRecovery通过分析加密元数据自动检测LUKS加密设置,在破解之前必须使用ElcomsoftForensicDiskDecryptor提取元数据。多个加密密钥LUKS卷可以用多个密钥保护,此规范允许多个用户密钥解密用于加密的主密钥。因此,LUKS加密设备可能包含多个密钥槽,用于存储备份密钥/密码,并允许多个用户使用自己的密码解锁LUKS卷。每个密钥槽都使用唯一的盐加密,这使得反向暴力破解(将相同的KDF密码匹配到不同的槽)变得不可行。在破解过程中,必须为每个密钥槽分别计算KDF。因此,恢复密码以保护LUKS设备需要选择要破解的密钥槽。破解密码时,使用ElcomsoftDistributedPasswordRecovery在设置攻击时执行此选项。破解LUKS加密步骤1:提取加密元数据为了保护对存储在加密设备中的数据的访问,必须首先恢复原始明文密码。涉及多个步骤,需要几种不同的工具。1.使用ElcomsoftForensicDiskDecryptor或ElcomsoftSystemRecovery从加密设备或磁盘映像中提取加密元数据。2.使用提取的元数据(一个小文件)通过ElcomsoftDistributedPasswordRecovery破解密码。3.找到密码后,挂载磁盘区或解密数据。目前有两种不同的工具可用于提取LUKS加密的元数据,选择合适的工具取决于您是在现场工作还是在实验室工作。如果要分析可疑计算机,可以使用ElcomsoftSystemRecovery从USB闪存驱动器启动系统,并从连接到计算机的存储设备中提取加密的元数据。注意:ElcomsoftSystemRecovery7.06及更高版本支持LUKS加密。如果您使用的是旧版本的工具,请更新到最新版本以获得LUKS支持。1.下载ElcomsoftSystemRecovery,启动安装程序并创建可启动USB驱动器。2.使用U盘将目标系统引导至WindowsPE环境。3.ElcomsoftSystemRecovery将自动启动。4.查看附加磁盘。5.选择LUKS加密的分区并单击“转储”以提取加密的元数据。在您的计算机上传输加密的元数据,并将其与Elcomsoft分布式密码恢复一起使用,以启动LUKS加密密码的破解。如果您在实验室工作并且正在处理磁盘或磁盘映像,您将使用ElcomsoftForensicDiskDecryptor,使用ElcomsoftForensicDiskDecryptor提取加密的元数据非常简单。注意:ElcomsoftForensicDiskDecryptor2.13及以上版本支持LUKS加密,如果您使用的是旧版本工具,请更新至最新版本以获得LUKS支持。1.启动ElcomsoftForensicDiskDecryptor。2.选择操作模式“提取/准备数据以进一步恢复密码”。3.打开包含LUKS卷的物理设备或磁盘映像,在下面的示例中我们正在处理一个物理设备。4.EFDD将显示加密卷列表,选择要从中提取加密元数据的卷。5.单击“下一步”提取加密的元数据并将其保存到文件中。破解LUKS加密第2步:破解密码虽然LUKS通过在密钥生成过程中使用数千次哈希函数迭代来提供针对暴力破解的强大保护,但我们在密码恢复破解方面比过去有了很大的进步。由于采用了GPU加速、分布式和云计算,大大加快了密码的暴力破解速度。使用多达10,000台计算机和按需云实例通过Elcomsoft分布式密码恢复破解单个密码。为了破解,请执行以下操作。1.启动Elcomsoft分布式密码恢复;2.打开包含上一步中使用ElcomsoftForensicDiskDecryptor获得的加密元数据的文件;3.将显示可用的键槽和哈希迭代次数。指定要破解的密钥槽;4.配置并开始破解;暴力破解不仅变得更快,而且更聪明。一个好的起点是用户现有的密码,它可以从用户的Google帐户、macOS、iOS或iCloud钥匙串、Microsoft帐户中提取,或者从用户的计算机中提取,其中用户的现有密码提示可能使用的字符集:Elcomsoft分布式密码恢复提供了许多选项来自动尝试最常见的密码变体(例如Password1、password1967或pa$$w0rd):掩码可用于尝试匹配已建立的常见模式的密码:高级技术允许使用最多两个词典和可编写脚本的规则:破解密码需要多长时间?即使您确切知道一次攻击每秒会生成多少个密码,仍有许多因素会影响恢复LUKS密码所需的时间。密码的长度及其熵,以及您对密码的了解或用户如何组合密码,将对破解特定LUKS卷所需的时间产生巨大影响。恢复速度有多快?速度不是一个常数值,很多影响破解速度的因素并不明显。您每秒可以尝试的密码数量取决于几个因素,最重要的是以下因素:硬件:您拥有的视频卡越多、越高端,原始速度就越快。进行攻击的计算机数量也是如此,处理密码的计算机越多,速度就越快。哈希函数:一些哈希函数比其他的慢。对于LUKS,用户可以选择RIPEMD160、SHA-1、SHA-256、SHA-512和WHIRLPOOL五种哈希函数,其中RIPEMD160最快,WHIRLPOOL最慢。根据设置加密时哈希函数的选择,您的攻击可能会更快或更慢。EncryptionAlgorithmandEncryptionMode:同样,这些设置是在用户设置加密时选择的,hash函数的选择会影响攻击的速度,但是要比hash函数的选择慢很多。哈希迭代次数和用户计算机的速度:与BitLocker或VeraCrypt等其他磁盘加密工具不同,LUKS改变了用于保护主加密密钥的哈希迭代次数。在使用给定的加密设置组合创建加密磁盘时,LUKS会对用户系统进行基准测试。此数据用于选择保护主加密密钥的哈希迭代次数。事实上,在低端计算机上创建的LUKS加密磁盘或容器的保护功能比在高端硬件上创建的类似磁盘或容器弱。如果将磁盘或容器移动到功能更强大的新计算机,哈希迭代次数不会改变。更有趣的是,哈希迭代的次数取决于其他加密设置的选择。如果使用较弱(较快)的哈希函数,则选择大量的哈希迭代,反之亦然。从理论上讲,无论选择的哈希函数和加密设置如何,可变数量的哈希迭代都会使针对在类似硬件上创建的LUKS卷或容器的攻击速度相同。不是这种情况;不同算法和哈希函数之间的攻击速度仍然存在差异,如下面的基准测试所示。值得注意的是,哈希迭代次数与其他加密元数据一起存储,而TrueCrypt/VeraCrypt容器并非如此,这使得哈希迭代次数成为另一个用户提供的秘密。总结LUKS不仅是一种流行和广泛使用的加密规范,而且还是一个非常有趣的规范。支持多个密钥槽、散列函数、加密算法和加密模式的选择,以及基于基准的算法,以根据用户计算机的性能在设置加密时自动选择散列迭代次数。本文翻译自:https://blog.elcomsoft.com/2020/08/breaking-luks-encryption/如有转载请注明出处