linux内核模块签名,linux内核模块签名
make binrpm-pkg 模块签名和debuginfo同时开启会出错
模块签名是在mod_install的时候,但后续在find-debuginfo.sh中debugedit又会修改文件,导致前面的签名无效。
可行改动方法为:
在Makefile中将 mod_sign_cmd = perl $(srctree)/scripts/sign-file $(CONFIG_MODULE_SIG_HASH) $(MODSECKEY) $(MODPUBKEY) 改为 mod_sign_cmd=true,
在find-debuginfo_kk.sh中的debugedit后几行位置加上下面三行
if [[ $f =~ .ko$ ]]; then$BUILDDIR/scripts/sign-file "sha256" "$BUILDDIR/signing_key.priv" "$BUILDDIR/signing_key.x509" "$f"fi
vault.centos.org/7.3.1611/os/Source/SPackages/rpm-4.11.3-21.el7.src.rpm
linux内核模块签名 Documentation/module_signing.txt
内核在模块模块加载时使用加密签名验证,校验签名是否与已编译的内核公钥匹配。目前只支持RSA X.509验证。
签名验证在通过CONFIG_MODULE_SIG使能。打开签名同时还会强制做模块ELF元数据检查,然后再做签名验证。
公钥生成
内核编译时可以指定一系列的公钥。x509.genkey文件用来生成X509密钥。如果没有该文件,系统会自动提供一个默认的配置。Makefile会根据x509.genkey规则在内核编译根目录生成默认配置,用户可以手动更改该文件。
由此在内核编译过程中分别生成私钥和公钥文件分别为./signing_key.priv和./signing_key.x509。
默认配置是使用/dev/random生成的。如果/dev/random没有足够数据,在后台运行以下命令可以生成更多的数据:rngd -r /dev/urandom。
模块签名
设置了CONFIG_MODULE_SIG_ALL,所有模块将会自动添加签名。如果没有设置,需要手动添加:
scripts/sign-file $(MODSECKEY) $(MODPUBKEY) modules.ko
哈希算法必须为sha1, sha224, sha256, sha384, sha512。对应的加密算法必须是使能的。CONFIG_MODULE_SIG_HASH设置sign-file使用的默认算法。
MODSECKEY=
加密私钥文件,默认是./signing_key.priv
MODPUBKEY=
加密公钥文件,默认为./signing_key.x509
签名模块裁减
签名模块裁减就是去除签名部分,在重新签名之前需要先裁减之前的签名。在打包内核模块发布时,并没有自动裁减。
加载签名模块
模块是通过insmod来加载的,模块加载时通过检查模块的签名部分来验证。
不合法签名和没有签名的模块
如果设 置了CONFIG_MODULE_SIG_FORCE或者在内核启动命令行设置了module.sig_enforce,内核将只加载带有公钥的合法签名 模块。如果都没有设置则会加载没有签名的模块。如果内核有密钥,但模块没有提供合法的签名就会被拒绝加载。下表说明了各种情况:
模块状态 许可模式 强制检查未签名 通过 EKEYREJECTED签名,没有公钥 ENOKEY ENOKEY签名,公钥 通过 通过非法签名,公钥 EKEYREJECTED EKEYREJECTED签名,过期密钥 EKEYEXPIRED EKEYEXPIRED破坏的签名 EBADMSG EBADMSG破坏的ELF ENOEXEC ENOEXEC
linux内核模块签名,linux内核模块签名相关推荐
- 【Linux 内核】Linux 内核特性 ( 组织形式 | 进程调度 | 内核线程 | 多平台虚拟内存管理 | 虚拟文件系统 | 内核模块机制 | 定制系统调用 | 网络模块架构 )
文章目录 一.Linux 内核特性 1.Linux 内核组织形式 2.Linux 进程调度 3.Linux 内核线程 4.Linux 内核多平台虚拟内存管理 5.Linux 虚拟文件系统 6.Linu ...
- linux内核编译与内核模块
linux内核简介.配置编译与内核模块 Linux系统架构 主要分为用户空间和内核空间.用户空间包括应用程序和C库等.内核空间包括系统调用接口,linux内核以及体系结构相关代码.关于linux要区分 ...
- linux内核驱动ldd3_走进linux 驱动开发 之 内核模块
一.Linux内核简介 1.宏内核与微内核 内核分为四大类:单内核(宏内核):微内核:混合内核:外内核. 宏内核(Monolithickernel)是将内核从整体上作为一个大过程来实现,所有的内核服务 ...
- Linux内核开发_内核模块
内核模块是什么? Linux下的内核模块类似于Windows下的DLL动态链接库技术,和我们平常所使用的一些动态链接的SDK库一样,只是调用者是内核而已,不是用户态的程序. 内核模块拥有的的权限是和用 ...
- Linux可加载内核模块(LKM)(转载)
转载: 漏天剑 文章导航: 为校长杯流尽最后一滴血, Lkm注射, 返回首页 Linux可加载内核模块(LKM) Linux可加载内核模块完全版 --黑客.病毒程序编写者和系统管理员的概念性指南 作者 ...
- Linux驱动篇之内核模块
Linux驱动篇之内核模块 1.基本概念 模块与驱动: Linux中,将设备分为三种基本的类型. 字符设备 块设备 网络接口 Linux中还有一个很重要的概念,模块.可在运行时添加到内核中的代码被称为 ...
- 《学活Linux》第二讲——内核模块和驱动模型
<学活LINUX> 第二讲 内核模块和驱动模型 "各位观众晚上好.今天是7月29日,星期六,农历六月十二.欢迎收看<新闻联播>节目--台风'杜苏芮'强度减弱,受其寒流 ...
- Linux openssl 搭建CA、签名证书
目录 前言 配置CA 安装openssl 修改 openssl 配置文件 创建所需要的文件 创建CA KEY 创建CA 证书 创建证书 生成密钥 生成签名请求文件 签名证书请求文件 自签名证书 创建 ...
- 360签名工具 linux,360apk签名工具-360apk签名工具(qihoo360 apk signer) 1.0 免费版 - 河东下载站...
360apk签名工具是一款非常出色的apk反编译软件,体积虽小,但是功能上非常专业,对于从事移动开发相关的用户们来说是必不可少的得力工具,有了它再也不用一个一个进行操作了,太浪费时间,360apk签名 ...
最新文章
- Cannot center sparse matrices: pass `with_mean=False`
- spring异常Unsatisfied dependency expressed through constructor parameter 0
- Android核心分析 之一分析方法论探讨之设计意图
- PyTorch教程(八):常见激活函数与Loss的梯度
- linux 7 services设定,CENTOS/RHEL7系统中设置SYSTEMD SERVICE的ULIMIT资源限制
- 回顾Spirng ioc 控制反转
- rc.local介绍(linux启动系列之一)
- 根据二叉树的先序、中序遍历结果重建二叉树
- 高效的敏捷测试第七课 自动化部署和BVT
- Android中MVP模式
- mysql节假日函数_如何在MySQL中计算不包括周末和节假日的日期差
- azkaban 安装
- Anaconda入门:安装及包与环境的管理(conda命令)
- 市政管网检测机器人收费标准_淮安市金湖县市政管道机器人检测怎么收费
- 数据结构的学习_4.2 矩阵的压缩存储(对称矩阵)
- 五一干货资料整理,在学习上的劳动才是最好的劳动! (包括:ML、DL、RL、Paper、NLP、CV、KG等)...
- 互联网大厂考点(阿里+百度+腾讯+字节跳动+美团+京东)
- [直播学习--2022/7/22]--前端发展趋势(尤雨溪老师)
- 中国BOPET电容器膜市场行业投资前景展望及风险评估报告2022-2028年
- mysql 南邮ctf_南邮ctf之web之wp
热门文章
- html 监听后端变化_SpringBoot2.0整合WebSocket,实现后端数据实时推送!
- 从容器开始的良好做法
- MySQL 8.0来了,逆之者亡...
- c语言排队系统,【分享】C语言 银行取票排队系统
- manjaro设置java_manjaro 深度学习编程环境搭建
- junit依赖_3、Spring 中的依赖注入(DI),你都知道多少?
- 联想服务器imm默认地址_命令下配置ip地址
- 可视化界面_uniapp通过 HBuilderX 可视化界面构建项目
- java中html5表格_java:HTML(table表格,ul列表)和CSS(导入.css文件,三种定义颜色方式,三种样式选择器,a标签属性顺序,)...
- solr 英文模拟mysql like查询xml_Solr实现类似MySQL的LIKE查询功能