linux内核模块签名(译)

转自:http://blog.csdn.net/liumangxiong/article/details/18730111

linux内核模块签名
内核在模块模块加载时使用加密签名验证,校验签名是否与已编译的内核公钥匹配。目前只支持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 <hash algo> $(MODSECKEY) $(MODPUBKEY) modules.ko
哈希算法必须为sha1, sha224, sha256, sha384, sha512。对应的加密算法必须是使能的。CONFIG_MODULE_SIG_HASH设置sign-file使用的默认算法。
MODSECKEY=<secret-key-ring-path>
加密私钥文件,默认是./signing_key.priv
MODPUBKEY=<public-key-ring-path>
加密公钥文件,默认为./signing_key.x509
module.ko是需要签名的模块。

签名模块裁减
签名模块裁减就是去除签名部分,在重新签名之前需要先裁减之前的签名。在打包内核模块发布时,并没有自动裁减。

加载签名模块
模块是通过insmod来加载的,模块加载时通过检查模块的签名部分来验证。

不合法签名和没有签名的模块
如果设置了CONFIG_MODULE_SIG_FORCE或者在内核启动命令行设置了module.sig_enforce,内核将只加载带有公钥的合法签名模块。如果都没有设置则会加载没有签名的模块。如果内核有密钥,但模块没有提供合法的签名就会被拒绝加载。下表说明了各种情况:
模块状态            许可模式    强制检查
未签名               通过          EKEYREJECTED
签名,没有公钥   ENOKEY     ENOKEY
签名,公钥         通过          通过
非法签名,公钥   EKEYREJECTED EKEYREJECTED
签名,过期密钥   EKEYEXPIRED   EKEYEXPIRED
破坏的签名         EBADMSG    EBADMSG
破坏的ELF           ENOEXEC    ENOEXEC

转载请注明原文出处:http://blog.csdn.net/liumangxiong
英文:Documentation/module_signing.txt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux内核安全技术主要是为了保护Linux操作系统的核心部分,防止攻击者利用漏洞或恶意代码对系统进行破坏或入侵。以下是一些常见的Linux内核安全技术: 1. 内核漏洞修复:Linux内核经常会发现漏洞,并及时发布修复补丁。及时更新内核版本可以提高系统的安全性。 2. 安全模块:Linux内核支持加载安全模块,如SELinux(Security-Enhanced Linux)和AppArmor。这些安全模块可以限制进程的权限,防止恶意进程对系统进行攻击。 3. 内核参数设置:通过调整内核参数,可以增强系统的安全性。例如,可以限制进程能够使用的系统资源,限制网络连接数等。 4. 内核审计:Linux内核提供了审计功能,可以记录系统中发生的安全事件和操作。通过审计日志,可以追踪和分析系统的安全问题。 5. 内核模块安全:Linux内核模块是内核的扩展,可以加载和卸载。为了防止恶意模块的加载,可以使用模块签名和模块黑名单等技术。 6. 内核沙箱:内核沙箱是一种隔离机制,可以将不可信的代码或进程限制在一个安全的环境中运行,以防止对系统的恶意操作。 7. 内核安全审计:通过对内核代码进行审计,可以发现潜在的安全问题和漏洞,并及时修复。 8. 内核安全加固:对Linux内核进行加固,可以通过禁用不必要的功能、限制系统调用、配置访问控制等方式来提高系统的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值