elf签名和可执行文件签名

linux之所以容易清除病毒前面有文章谈过,就是说它可以随时删除文件,linux的文件管理没有和用户的任何策略胶合在一起,就是说打开文件的方式没有独占方式,所谓独占就是和用户的胶合,打开应该仅仅有文件的属性才对,比如读,写等等,而不应该有除了如何使用文件之外的信息,独占文件是不允许的,凭什么独占,linux的单点验证在于你是否是文件的主人,也就是文件的访问控制列表,只要是你就可以打开它或者删除它,我是文件的主人就因为别的主人独占打开了文件我就不能使用文件,这对我不公平!在linux中独占文件是程序应该考虑的事情而不是内核应该提供的保护,避免行贿受贿的最佳方式就是剥夺执行官更多的特权。linux的内核rootkit之所以容易清除在于linux的内核是完全映射进内存的,也就是说它不可换出,这样在运行时只需要换一个内核就可以了,然后在重新启动系统之前你不必担心系统XX屏。

就病毒本身来讲,虽然linux善于简单的清楚病毒,但是这也仅仅是一个补救方案,如何才能使得linux不中病毒呢?众所周知,linux将elf文件格式作为自己的可执行文件格式,那么保护elf也就成了首要大任,怎么保护呢?如果说我们无法防止一个可执行文件被破坏,那么最起码我们应该知道一个可执行文件是否已经被破坏,这显然很重要,目前有很多方法,签名是一种常见的方式,在开源网站下载过源代码的朋友都清楚,一般的源代码或者二进制程序都会有一个md5文件,这个文件用于认证,通过linux多数发行版自带的工具可以轻易得到一个软件包的md5摘要,在执行前如果我们计算出该程序的摘要,然后和下载时候一同下载的摘要文件比对,如果相同,那么就说明文件没有被篡改,反之该程序就有可能是不安全的,这个机制简单的实现了运行前的判断,那么有没有什么方式动态的判断程序是否被更改呢?有的,这就是elf签名机制,在执行一个可执行文件的时候要先将这个elf文件加载到内存,如果说可以在加载的期间判断文件是否合法,那么最好了,原理很简单,就是在elf加载的时候验证证书,在内核中维护一个可信证书链表,而每一个elf文件的头均说明该文件是否要经过验证,如果是的话,那么elf文件中就会有签名信息,加载elf的时候遍历内核中的证书链表依次验证就可以了,这就需要在内核中注册可信证书,完了后每一个elf文件中均包含认证信息,包含两部分,第一部分包含是否需要验证以及验证的级别,第二部分包括如果需要验证的话那么签名值是多少,如果需要验证,那么在加载elf的时候就会遍历内核中的证书链表,直到匹配成功为止。

虽然elf的认证机制很不错很严谨,但是总觉得将简单的问题复杂化了,就是说这个机制仅仅是一个学究的作品而不是一个可行的解决方案,说实话我不是很喜欢这个机制,毕竟是学究的产物嘛。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值