首页 理论教育 eCryptfs文件格式解析与标签格式详解

eCryptfs文件格式解析与标签格式详解

时间:2023-11-22 理论教育 版权反馈
【摘要】:下面看一下eCryptfs中的文件格式,见表17-1。表17-1 eCryptfs文件格式 幻数的头4个字节是m_1,尾4个字节是m_2,m_1和m_2满足条件:m_1^0x3c81b7f5==m_2。表17-2 tag 3_packet格式 此处变长,1~2B,本表按2B计算。格式描述符固定为0x62。文件名长度固定为8。文件名和日期都被eCryptfs的加解密逻辑忽略,它们的存在是由于eCryptfs使用了rfc2440提供的格式,在rfc2440提供的格式中包含文件名和日期。Tag_1_packet前面介绍了tag_3_packet,下面介绍另一种格式tag_1_packet,其格式见表17-4。表17-4 tag_1_packet包格式Tag 1 ID固定为0x01。

eCryptfs文件格式解析与标签格式详解

套用云计算常用的“Xxx as a Service”,eCryptfs是“Gnupg as a filesystem”。加密文件的密钥信息或者存储在文件的头部,或者存储在文件的扩展属性“user.ecryptfs”之中。

用于加密/解密eCryptfs文件系统中文件的密钥来源于内核生成的一个随机数。这个密钥并没有存储在eCryptfs文件系统的文件头或文件的扩展属性之中。那么存在文件头或扩展属性中的是什么呢?存储的是对这个密钥的一个加密后的结果。用于加密这个密钥的密钥称为FEKEK(File Encryption Key Encryption Key)。在打开文件时,内核要用FEKEK对存储于文件头或文件扩展属性中的加密后的密钥信息进行解密,将解密后的密钥保存起来,供文件读写操作使用。

下面看一下eCryptfs中的文件格式(假设密钥存储在文件头部),见表17-1。

表17-1 eCryptfs文件格式

978-7-111-54905-5-Part05-27.jpg

㊀ 幻数(magic number)的头4个字节是m_1,尾4个字节是m_2,m_1和m_2满足条件:m_1^0x3c81b7f5==m_2。

㊁ 标记用到了4个bit,分别标记ENABLE_HMAC、ENCRYPTED、METADATA_IN_XATTR、ENCRYPT_FILENAMES

㊂ 当版本大于或等于1时有此域。

㊃ 当版本大于或等于1时有此域。

上表中的密钥和加密算法信息有两种格式:tag_3_packet和tag_1_packet,均来自rfc2440下面分别讲解。

(1)tag_3_packet

tag_3_packet的格式见表17-2。

表17-2 tag 3_packet格式

978-7-111-54905-5-Part05-28.jpg

㊄ 此处变长,1~2B,本表按2B计算。

Tag 3 ID是0x8c。版本号是4。算法编码的相关数据结构

978-7-111-54905-5-Part05-29.jpg(www.xing528.com)

几个相关的定义是:

978-7-111-54905-5-Part05-30.jpg

S2K标记固定为3。Hash ID固定为1,表示使用MD5算法。

tag_3_packet之后紧跟着一个tag_11_packet,见表17-3。tag_3_packet包含密钥信息tag_11_packet包含密钥的名字。

表17-3 tag_11_packet格式

978-7-111-54905-5-Part05-31.jpg

㊀ 此处变长,1~2B,本表按2B计算。

Tag 11 ID为0xed。格式描述符固定为0x62。文件名长度固定为8。文件名和日期都被eCryptfs的加解密逻辑忽略,它们的存在是由于eCryptfs使用了rfc2440提供的格式,在rfc2440提供的格式中包含文件名和日期。

这里有一个容易混淆的地方,在rfc2440中Tag 11的内容部分用来存储签名信息。eCryptfs的Tag 11的内容部分存储的不是签名,而是一个密钥的名字(描述),这个密钥就是用于加密密钥的密钥——FEKEK。

Tag 3和Tag 11一起用来描述eCryptfs使用口令生成FEKEK的情况。口令是一个字符串,经过若干次哈希迭代最终生成一个定长的密钥,它就是FEKEK。用FEKEK加密实际的密钥,存储为表17-2中的“加密后的密钥”。而Tag 11中的内容是密钥的名字(描述),内核将对FEKEK再额外多做一次哈希迭代的结果作为密钥(FEKEK)的名字。

(2)Tag_1_packet

前面介绍了tag_3_packet,下面介绍另一种格式tag_1_packet,其格式见表17-4。

表17-4 tag_1_packet包格式

978-7-111-54905-5-Part05-32.jpg

Tag 1 ID固定为0x01。版本号固定为3。

在表17-1中的“密钥和加密算法信息”中可以包含多个单元,每个单元或者是一个tag_3_packet加一个tag_11_packet,或者是一个tag_1_packet。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈