0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

磁盘eCryptfs加密测试用例

麦辣鸡腿堡 来源:OPPO内核工匠 作者:m0rgan 2023-11-29 11:27 次阅读

eCryptfs详解

本章节我们先用简单用例验证eCryptfs加密效果特点,使大家对方案有个整体感性认识,同时也会提供一个C版本用例作参考。其次对测试结果进行初步分析,接着详细分析eCryptfs方案架构原理和核心机制,最后对关键业务流程代码进行简单梳理。

测试环境使用Ubuntu20.04虚拟机,因Ubuntu系统默认打开eCryptfs内核配置(CONFIG_ECRYPT_FS=y),只需apt安装用户态工具ecryptfs-utils即可。

4.1、测试用例

下图是一个脚本基础测试用例。先创建test目录和文件hello,之后使用 mount -t ecryptfs方式对test目录进行加密,为避免命令行交互,将所有加密参数(passwd、cipher、key size等)通过命令行-o传递。加密后在test目录创建新文件hello_encrypted。最后umount取消目录加密。

图片

图片

从第一个测试用例可以观察到的现象/特性有:

1、执行mount,写入hello_encrypted文件内容后可以正确访问,但umount后则为密文。说明eCryptfs作为堆叠加密文件系统,是通过mount/unmount操作来开关使能的。功能打开时,用户读写操作是感知不到数据加解密过程的,即透明加密。

2、hello文件内容在mount前写入,在mount前后都能正确访问(用例只测了读操作,实际写也可以)。说明eCryptfs支持非加密文件和加密文件在一个目录内混合存储,并能正确访问(实际操作强烈不建议,见下个用例)。

3、对于加密文件hello_encrypted,明文状态下长度为16 Bytes,加密状态下为12KB,变化比较明显。

如果对上述测试用例稍加改动,调整mount -t ecryptfs参数,如改变passwd,取消no_sig_cache=y配置,打开文件名加密参数即ecryptfs_enable_filename_crypto=y,测试效果如下图:

图片

从第二个改动后的用例可以观察到的现象/特性有 :

4、ecryptfs支持文件名加密。因为文件名加密密钥FNEK未在参数中指定,mount helper会提示/默认使用文件内容加密密钥(即图中fnek_sig和fs_sig相同,需说明的是加密密钥并非参数中的passwd,后续架构和密钥管理章节会说明)。

5、虽然ecryptfs_passthrough特性仍打开,即允许加密和非加密文件共存,但与上一个用例效果不同。启动文件名加密并mount后,未加密文件hello无法在test中显示,umount后又可正常访问。两个用例中passthrough特性在不同参数下表现不同,因此实际应用中,强烈不建议加密和非加密文件在一个目录混存。

图片

图片

另外补充一个现象/特性:

6、umount后,即加密的test目录是可以直接传输/拷贝到其他主机/网络进行存储备份的。其他用户使用时,只需用相同参数重新mount即可正确访问。

关于用例中mount -t ecryptfs命令的相关参数汇总如下,详情可参考man ecryptfs手册及ecryptfs-utils源码。部分参数和意义会在架构分析和密钥管理章节进一步说明。

图片

需要说明的是,上述脚本用例的功能基本都可以用ecryptfs-utils提供接口API实现。下面是作者实现的一个C用例的部分代码参考。因为C程序需引用ecryptfs.h头文件并使用相关API函数,需要安装libecryptfs-dev软件包,并在编译时指定-lecryptfs链接对应库文件。

C用例中需要注意的是,mount操作前必须进行ecryptfs_add_passphrase_key_to_keyring,即将passphrase转换成对应的key(实际为FEKEK,见后续分析),并注册到内核keyring,同时返回一个key_sig给用户后续使用。

图片

4.2、结果分析

从上节测试结果中,汇总相关测试项以及eCryptfs效果特性如下表,需要说明的有两点:

图片

一是对test目录重复mount且每次使用不同密钥的效果。从下图用例看,对应passwd mount后生成的文件,只能在该mount context中正确访问。这个用例仅为简单说明,在参数变化情况下,例如文件名加密,情况可能更复杂和不确定,因此也不建议使用。图片

二是文件加密后大小变化问题,这个原因在于eCryptfs的方案本身设计。

文档《eCryptfs v0.1 Design Document》和2007年论文《eCryptfs: a Stacked Cryptographic
Filesystem》。从中可看出加密文件格式会多增加一个header信息(预留一个page)。对于文件内容则是按页分块加密。为了综合性能考虑,故使文件大小做到page对齐,最小12KB。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    8

    文章

    4453

    浏览量

    125126
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206736
  • 磁盘
    +关注

    关注

    1

    文章

    338

    浏览量

    24883
收藏 人收藏

    评论

    相关推荐

    基于pCTL的循环优化测试用自动生成方法

    【作者】:余侠;薛云志;陶秋铭;【来源】:《小型微型计算机系统》2010年03期【摘要】:循环优化测试对保证现代编译器质量有着重要作用.传统手工构造测试用方法面临着效率低的问题,而目前的自动构造
    发表于 04-24 09:51

    UML状态图和Petri网络在类测试用生成的应用

    【作者】:陈志德;曾凡平;【来源】:《小型微型计算机系统》2010年03期【摘要】:分析和研究UML状态图、扩展状态机和Petri网在类测试用生成的特点,提出结合三者优势的类测试用
    发表于 04-24 09:52

    如何编写测试用

    我们如何在访问仪器库的工具中编写任何测试用。 以上来自于谷歌翻译 以下为原文how we need to write any test case in tool which access the instrument library.
    发表于 11-09 10:34

    怎么用嵌入式软件运行剖面生成测试用

    对软件运行剖面进行数学建模,对系统是怎样的以及它会怎样被使用做出一个定量描述,根据这些量值可以对软件中至关重要的、生命攸关的、关系到系统成败的部分给与充分的测试。通过任务剖面模型可获取测试用
    发表于 10-11 08:32

    如何通过ARM嵌入式平台加密磁盘

    基于ARM嵌入式平台在嵌入式Linux系统下通过dm-crypt来加密磁盘
    发表于 12-15 06:46

    测试用质量的重要性

    介绍在进行测试时,通常会花很多精力选择“正确”的测试工具。这其实只是为了实现次要目标。当然,一个适合开发环境、项目和流程的工具是重要的。然而,对于良好测试而言,最重要的是测试用
    发表于 09-02 16:44

    基于UML的生成场景测试用例研究

    使用UML生成场景测试用例,有利于测试者设计测试用例。使用UML的类图、状态图和顺序图来说明DHCP实例的场景测试用例的生成方法,讨论基于UML顺序图生成场景
    发表于 03-31 09:49 15次下载

    神州云科磁盘阵列测试报告

    神州云科磁盘阵列测试报告
    发表于 12-16 22:37 0次下载

    数据测试:输入数据的设计方法和测试用例设计方法

    测试用例的设计是测试设计的重要内容,关于测试用例的设计方法,当前不少出版的测试书和发表的测试文章,不少存在着表述错误,主要是把
    的头像 发表于 06-29 10:22 2680次阅读

    详谈Web测试中的界面测试用例设计

    详谈Web测试中的界面测试用例设计
    的头像 发表于 06-29 10:48 1886次阅读

    测试用例的管理 介绍测试用例的几种管理方法

    摘要 随着软件系统规模的持续增大,业务复杂度的持续增加,软件测试的复杂度也随之越来越大。而软件测试工作复杂度的直接体现,就是测试用例编写、维护、执行和管理,所以编写易读、易维护和易管理的测试用
    的头像 发表于 11-26 15:13 6115次阅读
    <b class='flag-5'>测试用</b>例的管理 介绍<b class='flag-5'>测试用</b>例的几种管理方法

    【飞凌OKA40i-C开发板试用体验】磁盘的读写速率测试

    本文来源电子发烧友社区,作者:刘建华, 帖子地址: https://bbs.elecfans.com/jishu_2307426_1_1.html 挂载好了sata硬盘,这里做一下磁盘速度测试
    的头像 发表于 10-20 10:24 416次阅读

    FDE磁盘加密技术是什么

    磁盘加密技术 如上节所述,Disk Encryption磁盘加密,目标是保护数据at Rest状态下的机密性,加密对象是整个
    的头像 发表于 11-29 10:54 487次阅读
    FDE<b class='flag-5'>磁盘</b><b class='flag-5'>加密</b>技术是什么

    eCryptfs整体架构和核心加解密机制介绍

    ,使用passphrase模式(如上述测试用例)时不需要。ecryptfs-utils可作为用户态辅助工具或C接口编程参考。 应用程序发起系统调用时先经过VFS,判断目录类型为eCryptfs时调用
    的头像 发表于 11-29 11:43 312次阅读
    <b class='flag-5'>eCryptfs</b>整体架构和核心加解密机制介绍

    Linux内核安全eCryptfs密钥管理

    ecryptfs-utils源码,分别介绍这两个KEY的生成过程。 1、用户passphrase_passwd 到 FEKEK的转换 从C测试用例中看到,opt参数只有key_sig信息,并不指定FEKEK
    的头像 发表于 11-29 11:46 305次阅读
    Linux内核安全<b class='flag-5'>eCryptfs</b>密钥管理