LUKS磁盘格式

LUKS是Linux下统一的密钥设置,常用于磁盘加密。本文介绍了LUKS分区头、数据块加密、PBKDF2、AF-Splitter等核心概念,并详细阐述了LUKS的初始化、密钥创建和Master Key恢复的过程。LUKS支持多种加密算法、哈希函数和加密模式,增强了数据安全性。
摘要由CSDN通过智能技术生成

1 介绍

LUKS是"Linux Unified Key Setup"的简写。目前qemu的磁盘加密格式是luks格式。

LUKS磁盘格式如下图所示:

  • LUKS phdr: LUKS partition header。包含了使用的加密算法,加密模式,密钥长度,UUID和Master Key的校验和。
  • KM1~KM8: Key Material 1~8。
  • bulk data: 由Master Key加密的数据块。

另外,LUKS phdr中还包含了Key Slot的信息。每个Key Slot和一个KM相关联。Key Slot处于激活状态时,其对应的KM中保存了Master Key的加密副本(该加密副本由用户密码锁定)。Master Key则用于加密数据块。
一个LUKS分区的用户密码数量和Key Slot数量一致。通常情况下Master Key长度是16或者32字节。

2 前言

2.1 数据块加密

LUKS并未限制具体的加密算法实现(如AES或Twofish),加密和解密过程如下图所示:

以下伪代码展示了加解密的过程:

enc-data = encrypt(cipher-name, cipher-mode, key, original, original-length)

original = decrypt(cipher-name, cipher-mode, key, enc-data, original-length)

注意:如果加密算法要求固定块长度,不足的部分需要用0做填充。反之,解密的时候需要将填充的0去除。

2.2 加密哈希

在 PBKDF2 中需要一个伪随机函数,对于 AFsplitting 需要一个扩散函数。因此在HMAC setup中需要用到该哈希函数。

2.3 PBKDF2

LUKS 需要处理来自诸如键盘输入等熵弱来源的密码,PBKDF2(PKCS #5’s password based key derive function 2)正是为增强熵弱密码的安全特性而定义。LUKS默认使用SHA1作为伪随机函数,也可以通过设置hash-spec字段来设置其他哈希函数。

PBKDF2如下图所示:

在伪代码中,使用了以下语法:

result = PBKDF2(password, salt, iteration-count, derived-key-length)

以上PBKDF2函数的输出依赖于实际的hash-spec,可以将hash-spec认为一种环境变量。
有关PBKDF2的其他介绍如下:

  • 美国国家标准与技术研究院推荐。
  • 可以通过调整key来扩展,从而避免暴力破解。通过key扩展的基本思路是,在将密码哈希后,再使用key加上哈希值再使用相同的算法进行多次的哈希。如果黑客尝试去破解的话,他会因此多花费几十亿次计算的时间。PBKDF2可以通过指定迭代次数,你想让他多慢,他就有多慢。
  • 通过加盐的方式预防彩虹表的破解方式。盐是一个添加到用户的密码哈希过程中的一段随机序列。这个机制能够防止通过预先计算结果的彩虹表破解。每个用户都有自己的盐,这样的结果就是即使用户的密码相同,通过加盐后哈希值也将不同。然而,在将盐与密文存储的位置上有很多矛盾的地方,有的时候将两者存在一起比较方便,有的时候为了安全考虑又不得不将两者分开存储。
  • 不需要额外的库或者工具,这是一个开源的实现,在工作环境中能很方便的使用。

2.4 AF-Splitter

LUKS使用了反取证(Anti-Forensic)信息拆分。参考实现使用了SHA1作为底层扩散函数。

split-material = AFsplit(unsplit-material, length, stripes)

unsplit-material = AFmerge(split-material, length, stripes)

注意:split-material的长度是unsplit-material的stripes倍,即length * stripes字节。length是unsplit-material的字节数。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值