4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
Linux下一种 ELF 文件的代码签名验证机制_qinqin_新浪博客
来自 : 新浪博客 发布时间:2021-03-25

3.3验证算法
当用户请求执行某个ELF文件时,系统将根据图3-2所示的流程来判断如何验证该文件的签名值。为了提高系统效率,我们将分别为已验证过\"不完全签名值\"和\"完全签名值\"的ELF文件维护相应的缓存,当再次请求执行这些文件时,就可以不必重复验证其签名值了。

图3-2:系统级签名值验证机制
\"Linux下一种文件的代码签名验证机制\"

图3-2中,\"验证不完全签名值\"和\"验证完全签名值\"两项都是整个验证过程的重要步骤。签名值的验证与签名值的生成相对应,验证时首先要根据相应的数据通过3 式计算出摘要值(h′part或h′comp),然后再使用签名者的公钥(PKsign)通过 ○4式解密相应的签名值,得到的对应的摘要值(h′′part或h′′comp)。最后比较h′和h′′是否完全一致,一致则验证通过,不一致则验证失败。

3.4公钥管理
在解密签名数据时,需要用到签名者的证书公钥。由于可能存在多个签名者签发的代码,因此也就存在多个签名者的证书。为了节省系统开销,尽量减小对系统性能的影响,我们必须高效地管理这些证书公钥。为此,我们在系统核心空间中维护了一个信任公钥链表,所有被信任者的公钥都将被放在该公钥链表中。当系统验证代码的签名值时,就可以直接从公钥链表中取得相应的公钥。如果公钥链表中没有相应的公钥,则表示该代码的签名者不被信任,因而验证失败。系统中的被信任公钥是可配置的,系统在启动时将根据配置文件自动初始化核心公钥链表,系统管理员也可以随时对其刷新或者修改。

3.5软件结构
本机制的实现主要包括用户空间的签名验证工具和核心空间的签名验证机制模块两个部分。其中,用户空间的签名验证工具是本机制的辅助工具,其主要功能是对ELF文件进行签名和设置,同时也可对ELF文件的签名值进行验证,在此不再赘述;核心空间的签名验证机制模块可以分为验证策略模块以及公钥管理模块。

3.5.1验证策略模块

验证策略模块负责执行签名值的验证策略,同时负责管理已验证文件的缓存链表。当用户请求执行ELF文件时,该模块就会执行如图3-2所示的验证策略。

验证签名值时,系统将首先查询已验证文件缓存链表,如果发现被验证文件已经被验证过,那么就不必再进行重复验证,直接采用上次的验证结果。如果缓存链表中没有被执行文件,那么就向公钥管理模块请求签名者公钥,然后再验证其签名值。如果验证正确,则说明被执行文件是完整和可信的,就让其执行;否则就禁止执行。

另外,为了保证已验证文件缓存链表和实际文件的一致性,我们必须监视ELF文件的修改情况,当某一ELF文件被修改时,我们应当立即清除已验证文件缓存链表中与该文件相关的验证结果。

3.5.2公钥管理模块

公钥管理模块主要负责对信任公钥链表进行管理,如:初始化链表,获取、添加以及删除公钥节点等。

信任公钥链表由一系列的公钥节点组成,如图3-3所示。

图3-3核心公钥链表
\"Linux下一种文件的代码签名验证机制\"

其中key_id是对应公钥的MD5哈希值,长度为16个字节。从理论上说,不同公钥的key_id相同的概率接近于2128分之一。在很大范围内,我都可以认为key_id和公钥是一一对应的。因此,我们将key_id作为每个公钥的唯一标识。

3.6性能测试
表3-3是一组简单的测试数据,这些数据是通过多次执行后取得的平均值。从中可以看出,通过使用分级机制和缓存机制,系统开销增加不到5%,大大减小了对系统性能的影响。

表3-3验证签名的系统开销

本文链接: http://enelf.immuno-online.com/view-735014.html

发布于 : 2021-03-25 阅读(0)
公司介绍
品牌分类
制药的
联络我们
服务热线:4000-520-616
(限工作日9:00-18:00)
QQ :1570468124
手机:18915418616
官网:http://