LWN:IPE——用来确保只执行可信代码的security module!

Linux 内核透明加解密开发方案 Linux 内核提供了多种透明加解密的机制,允许在用户几乎无感知的情况下对数据进行加密和解密。以下是几种主要的开发方案及其实现细节。 阅读详情

关注了就能看到更多这么棒的文章哦~

The integrity policy enforcement security module

By Jonathan Corbet
April 16, 2020

原文来自:https://lwn.net/Articles/817472/

主译:DeepL

有许多方法来提高系统的安全等级。其中之一,也是通常在嵌入式系统或其他专用系统中使用的方法,就是努力确保只有经过批准的代码(由对该系统拥有权力的人来批准)才能执行。安全启动(secure boot)机制是就是其中一个例子,它确保计算机只会启动可信的kernel版本,不过它通常只保护到启动正确的kernel为止。在系统启动后还有各种机制来保护系统,在这个阶段,我们有了一个新选择,就是Deven Bowers发布的Integrity Policy Enforcement (IPE)  security module安全模块。

IPE是新一代的security module (安全模块)之一,作为最近在进行的module stacking实现工作的一部分而启用的。它并没有像SELinux、AppArmor或Smack那样试图提供一个完整的安全加固(security enforcement)机制。具体来说,它专注于审查执行代码的尝试。特别是,它实现的加固机制归结为一个简单的问题:系统要执行的代码是否来自于正确签名过的disk volume(磁盘卷)?

IPE设计目标是可以配合dm-verity一起工作,dm-verity为块设备提供了完整性检查(integrity checking)。每个dm-verity卷都有一个root hash(哈希)值,它是根据这个disk volume中各个block的hash值计算出来的。每当从这个disk volume中读取block时,都会一路验证hash值直到root hash,以确保没有任何东西被篡改。如果一切正常的话,在打开了dm-verity的disk volume中读出的数据,就可以确保是原始数据和原始hash值,没有被篡改。

虽然dm-verity可以用来确保没有人破坏disk image(磁盘映像),但在确保整个系统的完整性时,仍有一些不足之处。首先,是需要确保volume的root hash值是正确的,这可以通过把hash值存在一个独立的安全区域,或者直接对它进行加密签名。即使整个disk volume都是经过验证的、确保完整的性的,可以假如系统能够执行来自其他disk volume的代码,那么仍然是不安全的。

有一些security module可以解决这些问题。IPE就是试图以一种相对简单的方式来解决这些问题。打开IPE之后,它就要确保执行的所有代码都是来自受dm-verity保护的卷上的,这些代码具有正确的hash或签名。为了让系统管理员可以指明哪些可执行文件是允许运行的,IPE还创建了一个简洁的policy定义语言。

声明policy的第一行用来提供policy的名称和版本号:

    policy_name="Evil lockdown策略" policy_version=6.6.6

名称只是用来指代具体哪个policy,版本号是用来防止系统回退到这个policy的早期版本。但是,IPE会允许一个策略被另一个具有相同版本号的策略覆盖。

其他语句都是用来定义针对每个访问决策来进行什么样的处理动作。例如,下面这个规则将允许执行此文件:

    op=EXECUTE action=ALLOW

可以在policy定义中来控制是否允许如下操作:

  • EXECUTE:执行一个文件或加载一个文件以供执行。这包括调用mmap()或mprotect()来创建拥有执行权限的内存映射。

  • FIRMWARE:加载固件。

  • KMODULE:用insmod或modprobe加载内核模块。

  • KEXEC_IMAGE和KEXEC_INITRAMFS:通过kexec机制启动一个新内核;而KEXEC_INITRAMFS控制新内核提供的initramfs。

  • POLICY:加载integrity-measurement policy。注意,这里指的是IMA integrity subsystem(https://sourceforge.net/p/linux-ima/wiki/Home/?version=8  ),而不是IPE。

  • X509_CERT:加载证书到IMA中。

action=只有ALLOW或DENY这两个选择。

不过到目前为止,我们还没有谈到如何设置哪些来源的代码可以执行。这是通过添加其他修饰符来描述特定二进制文件的出处来实现的。通常我们首先需要允许那些来自secure boot机制验证过的文件系统镜像的代码执行:

    op=EXECUTE boot_verified=TRUE action=ALLOW

secure boot机制确保了最初始的RAM文件系统是验证过可信的,所以这里的可执行程序应该都允许运行。这就形成了一个可信链来确保后续程序的可信性。当然,IPE没有办法确定是否使用了secure boot;所以上述boot_verified=TRUE这一句的真正作用只是启用了对初始文件系统的信任。在此基础上,还有两个修饰符来描述代码可以(或不能)从哪里来:

    dmverity_roothash=hash

    dmverity_signature=TRUE|FALSE

第一句规则,会查找哪个dmverity volume的root hash值等于参数hash。通常情况下,应该对它配置成ALLOW,就可以启用此volume的执行权限。但是可以设置为DENY,以禁止包含已知漏洞的代码的volume。第二句这个带有 dmverity_signature 的规则会检查可执行文件是否来自于一个root hash已经被内核的trusted keying所签名过。

而DEFAULT 修饰符则用来描述没有规则匹配成功的情况下会怎么处理。例如,像下面这样的写法将默认拒绝一切,这可能是大多数人使用IPE时候的第一条语句。

    DEFAULT action=DENY

举个例子,如果有需要允许默认加载内核模块,那么在上面这一行之前可以加上下面这一句:

    DEFAULT op=KMODULE action=ALLOW

规则是按顺序处理的,先匹配到的规则会生效,所以规则的排序要仔细考虑好。

当前patch set中的整个policy定义就是这样了。由于我们经常需要在系统有条件能加载policy之前就打开IPE,因此它也支持在编译的时候使用SECURITY_IPE_BOOT_POLICY来指定一个初始策略。如果没有指定初始策略的话,IPE会先被禁用,直到策略加载完毕才启用,具体来说就是等到有一个policy文本文件被写入/sys/kernel/security/ipe/new_policy才启用。策略文件必须用在trusted keyring中找到的密钥签过名。同时可以加载多个policy,这就是为什么每个policy都有个name。选择一个policy作为当前的active policy,可以通过把它的名字写入ipe.active_policy这个sysctl节点来做到。对于runtime切换策略这个功能,似乎代码里没有任何限制。

有意思的是,缺省情况下,IPE会忽略policy文件中任何它无法解析的内容。这样做是出于今后兼容性的考虑,但也可能会导致以后不小心写了错别字也会导致policy设置结果出乎意料。可以使用ipe.perter_parse这个sysctl节点,在出现这种情况是就报出fatal error。

这个patch提供了IPE功能的说明文档(https://lwn.net/ml/linux-kernel/20200406221439.1469862-12-deven.desai@linux.microsoft.com/  )。

像IPE这类的技术都有一个共同的特点,即可以用来办好事,也可以用来做坏事。我们看到的最明显的用法是用来确保消费者的设备里的image不会被篡改,甚至连设备的主人也不能进行修改。但它也可以用来确保运行OpenWrt的路由器能够正常运行主人加载的正确版本软件。至少IPE是相对简单的,这意味着个人也可以在自己的机器上进行设置,而无需耗费大量时间。

截止到写这篇文章的时候,IPE还没有收到多少review,所以很难说什么时候,或者说以什么形式,来并入mainline。不过,从目前简单看下来,似乎没有什么大问题,应该还是可以继续走下去的。

全文完

LWN文章遵循CC BY-SA 4.0许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注LWN深度文章以及开源社区的各种新近言论~

Linux Security Module逆向分析实战 Linux Security Module逆向分析实战 本文记录了对某发行版Linux中一个安全模块(LSM)的逆向过程,该LSM对系统中待运行的程序进行安全校验,数据流穿越内核态与用户态,涉及系统内核及系统服务。此LSM对系统安全性的增强效果明显,其设计思路值得防守方研究学习,可于个人终端或服务器安全防护中应用。特此对逆向内容记录,希望能为读者在终端防护方面拓宽思路,同时欢迎感兴趣的师傅们交流学习。 一. LSM框架简介 Linux安全模块(Linux Security Module,LSM)框架是Lin 阅读详情

相关推荐

VLOOKUP_fixed.py

VLOOKUP_fixed.py

【S&P 2024】Invisible Plausibly-Deniable Storage

发表在 SP2024 的隐形的合理可否认存储,作者开创性的做了第一个真正意义上的隐形合理可否认存储系统,并首次对隐形合理可否认做了形式化的安全定义和证明。其将隐藏数据存储在 dm-crypt 用于加密公共数据的初始化向量中的思路非常巧妙, 并对向量结构做了特殊设计,解决了一些可能产生的安全问题。虽然存在一些不足,但是其工作是非常有意义的。

ATFWUS的博客 1547

YOLO26算法心电图十二导联目标检测+训练好的模型+368张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[导联I(I), 导联II(II), 导联III(III), 胸导联V1(V1), 胸导联V2(V2), 胸导联V3(V3), 胸导联V4(V4), 胸导联V5(V5), 胸导联V6(V6), 加压肢体导联aVF(aVF), 加压肢体导联aVL(aVL), 加压肢体导联aVR(aVR)] · 训练集:313 张 · 验证集:37 张 · 测试集:18 张 · 总计:368 张 该数据集聚焦于临床心电图信号的精准识别与定位,其核心检测目标为标准12导联心电图中的各个独立导联波形区域,涵盖肢体导联(I、II、III)与加压肢体导联(aVR、aVL、aVF),以及胸前导联(V1至V6),适用于心电图自动分析系统中对各导联位置的快速准确标注与分类。数据采集场景真实还原了医院心电图室或急诊监护环境下的标准心电图记录纸,波形清晰、基线稳定,具有高度临床参考价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 57 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9708** mAP50-95 | 0.6344 Precision | 0.8990 Recall | 0.9191 train/box_loss | 1.2231 train/cls_loss | 0.9703 val/box_loss | 1.2779 val/cls_loss | 0.... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

Iperf使用方法与参数说明

转自:http://blog.sina.com.cn/s/blog_49ab2ae20100cnig.html Iperf是一个网络性能测试工具。可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告带宽,延迟抖动和数据包丢失。Iperf在linux和windows平台均有二进制版本供自由使用。 Iperf was developed by NL

3737

企业级AI助手平台 开箱即用的全栈AI平台,支持多智能体协同、Supervisor模式编排、多种决策模式、RAG技术和流程编排能力 支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化

企业级AI应用开发框架,支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化能力,提供可视化流程编排、自主决策智能体与多智能体协同调度,兼容主流 Agent Skill 协议,帮助企业与开发者零门槛快速构建安全、高效、可落地的AI智能体应用与行业解决方案。

海外最新AI营销AI销售书籍推荐AI营销培训讲师AI销售培训讲师人工智能营销培训师人工智能销售培训师AI赋能营销培训AI赋能销售培训企业AI营销内训企业AI销售内训AI营销课程讲师AI销售课程讲师

专栏|AI营销与AI销售实战 · 第46期在这个人类与算法共舞的时代,销售,已经不是你我熟悉的那个“打电话、见客户、做PPT”的老行当了。你还以为销售是“打感情牌”?错了,情感要继续,但方式已经升级。你还以为AI只是“写写文案”?错了,文案只是皮毛,真正的杀器,是思维方式的重构,是认知地图的重绘。首先,我们需要明确一个事实:AI并不会消灭销售这个职业,但它必然会重新定义销售的本质。在销售领域,真正的制胜之道不是简单地采用AI工具,而是的能力。

Akibfrycc的博客 1100

对于加密数据(数据库字段级别加密)存储和并搜索的一些调查

如果您认为不良行为者不可避免地会进入您的网络,那么在将敏感数据放入数据库或文档存储之前对其进行加密是保护数据的最佳方法。对于敏感数据应该这么做。这种在存储之前进行加密的方法称为应用层加密,有相当数量的公司使用它来保护其敏感数据。2017 年,Equifax 遭到黑客攻击,这是历史上最大的泄密事件之一。攻击者下载了 1.46 亿美国人的出生日期、社会安全号码、地址和其他敏感信息。国会关于此次攻击的报告如下:攻击者能够使用这些凭据访问 48 个不相关的数据库。

学以致用 知行合一 1527

海康威视摄像头CVE-2017-7921漏洞复现:从零到一的实战指南(含解密工具下载)

本文详细解析了海康威视摄像头CVE-2017-7921漏洞的技术原理与复现方法,提供从环境搭建到实战利用的完整指南。通过认证绕过漏洞,攻击者可获取敏感信息并执行高权限操作,文章还包含解密工具下载与防御建议,助力安全研究人员深入理解物联网设备安全风险。

weixin_29325515的博客 808

密码术语

2.1安全模块 security module 含有密码算法、安全功能,可实现密钥管理机制的相对独立的软件、硬件、固件或其组合。 2.2安全凭证 security credential 用户通过身份鉴别后,由鉴别者为用户出具的一种可信任的电子凭据。 2.3安全芯片 security chip 含有密码算法、安全功能,可实现密钥管理机制的集成电路芯片。 2.4差分密码分析 differe

HOKING的专栏 4909

Mediapipe手势识别实战——基于关节角度计算实现动态手势分类

本文详细介绍了如何利用Mediapipe进行手势识别,通过计算手指关节弯曲角度实现动态手势分类。文章从基础原理出发,讲解了关节角度计算的数学方法,并提供了Python实现代码。同时,还分享了数字手势和OK手势的识别实战经验,以及性能优化和工程实践中的关键技巧,帮助开发者快速掌握实时手势识别技术。

weixin_26891599的博客 403

华为OD机考双机位C卷 - 打印机队列 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 打印机队列

算法大师! 4619

dm-integrity机制

本文详细介绍了如何编译和配置带dm-integrity校验的ext4文件系统。首先列出了必须按顺序编译的依赖库(util-linux、lvm2、popt等),并给出了每个库的编译安装步骤。然后阐述了创建dm-integrity校验文件系统的5个关键步骤:创建镜像文件、使用integritysetup格式化、创建ext4文件系统、挂载使用等。文章还分析了系统使用dm-integrity文件系统的两种方案:嵌入式系统采用dm-verity只读根文件系统配合脚本挂载;服务器/桌面系统通过initramfs映射dm

feixiangtiakongn的专栏 631

079、镜头阴影校正(LSC)精讲:径向衰减模型、增益矩阵生成与产线标定技巧

《镜头阴影校正(LSC)实战精要》 本文从实际案例出发,深入解析镜头阴影校正的核心技术与产线应用。作者通过一个典型故障案例(0.05mm镜片偏移导致LSC失效)揭示了LSC不仅是数学问题,更是光学-机械-工艺耦合系统。 【关键技术点】 模型优化:提出"径向+切向"双分量模型替代传统cos⁴θ模型,采用5阶多项式拟合径向衰减,1阶线性补偿切向误差 增益矩阵生成:采用自适应网格技术,在边缘区域加密网格,结合中值滤波与高斯平滑消除噪声干扰 产线标定:强调光源均匀性校准(积分球vs平板光源)、坏点预处理、温度补偿等

zzfmlxs的博客 102

dm-integrity

依赖库列表(必须按顺序编译安装到同一 SYSROOT)util-linux (提供 libuuid、libblkid)lvm2 (提供 libdevmapper)popt (命令行参数解析)json-c (LUKS2 元数据)

feixiangtiakongn的专栏 662

YOLO26 数据标注工具:LabelImg、Label Studio实战指南:主流标注工具的安装配置与使用技巧,高效完成目标检测数据标注

本文介绍了目标检测中数据标注的核心地位与常用工具。数据标注质量直接影响模型性能,需要关注准确性、一致性等维度。文章详细讲解了边界框、类别标签等基本概念,并对比了LabelImg、Label Studio等主流标注工具的特点。重点介绍了LabelImg的轻量级、易用性等优势,以及Label Studio的协作功能,为不同规模项目提供标注工具选择建议。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1174

大模型在电力交易功率预测中的应用:短期,超短期,中长期的完整解决方案代码详解

本文介绍了基于大模型的电力交易功率预测系统,该系统覆盖超短期(15分钟-1小时)、短期(1-6小时)和中长期(1天-1月)三个时间尺度。文章详细阐述了数据准备与特征工程,包括多源数据集成和特征重要性分析。在模型构建方面,采用了Temporal Fusion Transformer (TFT)模型进行超短期预测,Informer模型进行短期预测,以及N-HiTS模型进行中长期预测。此外,文章还探讨了概率预测与风险分析,并介绍了模型部署与交易策略集成的实现。最后,文章总结了系统的贡献,并展望了未来发展方向,如市

专注AI大模型,软件混淆,授权 1261

linux完整性验证机制

功能:在modprobeinsmod时验证.ko文件尾部附带的 PKCS#7 风格签名,拒绝未签名或签名不符的模块。—— 开启基础验签逻辑;—— 强制模式,未签名模块直接拒绝加载;—— 编译阶段自动为所有模块签名;—— 选择哈希算法;—— 选择 RSA 或 NIST-P384 ECDSA 作为公钥算法。证书格式:X.509v3,公钥直接编进内核或加入系统“受信任密钥环”。可在运行时临时开启强制校验。→→→,全部在内核空间完成,无需用户态守护进程。

feixiangtiakongn的专栏 422

使用libVLC进行视频截图的C/C++实现

通过这些代码,你可以在C/C++应用程序中实现视频截图功能,并将视频帧保存为图像文件。请注意,本文只提供了基本的示例代码,你可以根据自己的需求进行扩展和修改。libVLC是一个强大的开源多媒体框架,可以用于在C/C++应用程序中处理和播放音频和视频文件。我们将展示如何初始化libVLC,打开视频文件,捕获视频帧并保存为图像文件。在开始编写代码之前,你需要包含libVLC的头文件,并链接相应的库文件。在链接阶段,你需要添加libVLC库的链接选项。在使用libVLC之前,你需要初始化libVLC的实例。

学习使你进步。 470

Linux内核中的dm-crypt模块的异步IO改造---blog10

2021SC@SUDSC

qq_51946537的博客 839

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Kdump之kexec源码分析

知道kexec还是在linuxsir上看到一篇介绍其应用的帖子, 经常用kexec快速启动内核的步骤如下: (1).kexec -l --append="" [--initrd=xxxxxxxxxxx一般是要的,不过某些情况下可选] 例如: kexec -l /boot/vmlinuz-2.6.31  --append="root=/dev/sda6 ro nomce vga=0x317"

lucien的博客 8256

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Linux security module

apparmor selinux toyomo yama grsecurity

wlzsddx的专栏 791

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

spring boot + spring security 多module场景下 spring security 不起作用

spring boot + spring security 多module场景下 spring security 不起作用 问题场景描述 security-demo负责项目的整个安全模块,和安全有关的都在这个模块里 app-demo 是项目的运行模块 按照这个准备进行项目搭建,可是对应的配置一直没有起作用 spring boot + spring security 多module场景下 spri...

lucky9322的专栏 3803

浅谈 Android 的安全启动和完整性保护

在 IoT 中保证设备安全性的重要一环就是保证代码的完整性,不让恶意代码影响业务的正常逻辑。一般而言是及时修复现有攻击面所面临的漏洞,比如浏览器、蓝牙、调试接口;另一方面需要确保的是即便恶意代码获取了执行权限,也无法修改系统镜像进行持久化。针对这点所构造的安全方案通常称为 Secure Boot,对于不同的厂商,实现上可能会引入不同的名字,比如 Verified Boot、High Assurance Boot 等等,但本质上都是类似的。 Secure Boot Secure Boot 顾名思义就是安全启

有价值炮灰 5410

基于Linux Security Module的基于角色的权限管理模块

RBOS 为linux内核添加简易的基于角色的访问控制功能,系统基于LSM(Linux Security Module)模块; 为了能够支持insmod和rmmod ,我们对内核做了一定的修改,将security.c里面的security_hook_heads结构 EXPORT_SYMBOLS了。 系统要求 本驱动在ubuntu 14.04 amd64 可以很好的运行; 功能 定义好4类角色以及...

jmhIcoding 2107

Linux Security Module Framework

Computer security is a chronic and growing problem, even for Linux, as evidenced by the seemingly endless stream of software security vulnerabilities. The Linux Security Modules (LSM) project address

shuimuyq的专栏 897
上一篇: LWN:内核中进行更积极地内存整理(compaction)
下一篇: LWN:利用BPF来检查kernel数据结构内容!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值