一种基于嵌入式存储系统的内核模块完整性保护系统技术方案

技术编号:39261755 阅读:15 留言:0更新日期:2023-10-30 12:14
本发明专利技术涉及一种基于嵌入式存储系统的内核模块完整性保护系统,属于代码完整性保护领域。系统分为两个组成模块,一是主机部分的模块,二是嵌入式存储系统(如SD卡,U盘等)。本发明专利技术为解决纯软件的完整性保护方式的不安全,并且对于缺乏相关硬件设施的遗留设备,硬件方法不能使用的问题,提出一种基于嵌入式存储系统的固件扩展的挑战

【技术实现步骤摘要】
一种基于嵌入式存储系统的内核模块完整性保护系统


[0001]本专利技术提出一种基于嵌入式存储系统的内核模块完整性保护系统。属于代码完整性保护领域。

技术介绍

[0002]Linux作为一个开源的操作系统,具有开放、免费、可定制等优势,被广泛应用于各种领域。它不仅在服务器、个人电脑和移动设备等方面得到广泛应用,还被应用于智能家居、工业自动化、汽车控制等领域。它的核心内核由林纳斯
·
托瓦兹在1991年创建,此后不断发展壮大。然而,由于Linux系统的开放性和广泛应用,也使得其成为攻击者的攻击目标,攻击者利用这些漏洞可以对计算机系统进行各种攻击,如提权攻击、拒绝服务攻击等。在这些攻击中,除了通过网络发起的攻击外,利用操作系统漏洞的攻击占有很大的一部分。
[0003]内核作为操作系统的核心部分,是攻击者开展攻击的最高回报的目标。如果内核被攻破,攻击者就可以获取系统的完全控制权,进行各种恶意操作,例如窃取敏感信息、破坏系统文件、甚至完全摧毁系统。如果不能保障内核的安全,其他的任何保护也就无法真正实现。
[0004]为了保障内核的安全,Linux自身也提出了一些保护方案:在2004年,作为为计算平台可信性提供保护的重要技术之一的内核完整性度量架构(Integrity Measurement Architecture,IMA)被提出。作为内核完整性子系统的一个组成部分,IMA是基于TCG(可信计算组)开放标准的整体完整性架构的一部分,对内核镜像、内核模块、用户态代码、配置文件等,在系统启动、文件首次创建、文件更新时做校验。但其方法还是有其不安全性的,即针对驻留内存的代码篡改没有防护,其存储的校验值如果没有TPM(受信任的平台模块)支持,还是理论上有被篡改的可能。并且以及有研究提出通过恶意块设备来破坏IMA的方法。所以仅仅依靠IMA的方法是远远不够的。
[0005]并且从部署的物理实体角度分析代码的完整性保护技术,分为两种:基于软件和基于硬件。
[0006]基于软件的方法主要有:校验和、软件哨兵(监测软件运行状态和功能是否正常)、断言检查(检查代码是否符合预期的逻辑或语法规则)、代码模糊(用于将代码转换为不可读的模式,以便在代码被盗用或泄露时保护代码的安全性)、密码技术等。
[0007]基于硬件的方法指将软件与硬件配套使用,通过安全的硬件设备来防范代码篡改。一些主流硬件厂商提供的解决方案有如,利用专用CPU:ARM的TrustZone,Intel的Software Guard Extensions等,这一解决方案需要配套扩展指令和额外的访存机制;还有利用外部协处理器:如AMD的Platform Security Processor等。
[0008]以上方法中,对于能够完全掌握软件层面的攻击者来说,纯软件的解决方式则是不安全的,而对于缺乏相关硬件设施的遗留设备,硬件方法则是不能使用的,所以寻求一个有通用性的硬件就成为了一个亟需解决的问题。
[0009]为此,提出一种基于嵌入式存储系统的固件扩展的挑战

应答认证方式,通过将内
核模块代码段的校验和保存在嵌入式存储系统固件上,来确保其正确性和独立性,从而在比较校验和过程中,保证所对比的Linux内核模块的代码段校验和的正确性,从而保护内核模块代码的完整性。

技术实现思路

[0010]本专利技术为了对缺乏安全硬件支持的设备提供内核模块运行时的完整性保护,提出了一种基于扩展嵌入式存储系统固件的内核模块完整性保护系统。
[0011]一种基于扩展嵌入式存储系统固件的内核模块完整性保护系统,包括主机模块和嵌入式存储系统模块;其中,
[0012]存储系统模块通过通用器件接口接入主机(如U盘插口、TF卡插口),被Linux主机驱动识别为存储块设备,只有在目标块设备存在情况下,主机端模块才能共同工作,二者才能交互。
[0013]主机端模块即Linux内核模块,其代码实现按照功能划分为四个部分:
[0014]1、分析系统在加载模块时在一些文件夹下创建的相关文件,得到代码段的加载位置;具体为:
[0015]Linux系统在加载模块时会在/sys/module文件夹下创建模块的相关信息文件,从模块文件夹的/sections文件夹里的“.text”文件可以得到模块代码段加载位置。
[0016]2、对内核模块文件进行分析,得到代码段大小和重定位位置信息。具体为:
[0017]从ELF文件格式,对模块文件进行分析,可以得到代码段大小。对于重定位位置信息,一是从重定位节得到所有重定位位置信息,二是对其中不必要的项目如编译时插入的统计性能的一些跳转指令进行忽略(这些指令会在实际运行时都由NOP指令替代)。
[0018]3.选择交互接口,用于向嵌入式存储系统模块发送具体的读写命令。具体为:
[0019]主机利用ioctl的方式发送读写命令,由于内核模块并不能使用用户模式使用的具体ioctl函数,所以内核模块使用ioctl在内核里的具体调用的下一层函数vfs_ioctl。主机内核模块只在代码层面按照对应嵌入式存储系统的协议规则操作相关数据结构,设计传递的命令及数据,其他传递操作通过Linux系统本身的驱动,经由总线,硬件接口发送给嵌入式存储系统。
[0020]4.设计校验和计算函数以及消息验证码函数。具体为:
[0021]校验和计算函数的主要思想为每次读取内存的位置都由上次的计算的值和校验和的计算值来确定,其功能为为所检验的内存区域生成一个唯一的校验和。消息验证码函数采用线性哈希来实现,其功能为对和嵌入式存储系统模块交互的信息加入验证信息,防止交互信息的篡改。
[0022]为了构建嵌入式存储系统模块,涉及的基本术语定义如下:
[0023]·
key_s:存储系统端密钥。
[0024]·
key_h:主机端密钥。
[0025]·
会话秘钥:由key_s和key_h计算生成的密钥。
[0026]·
使能扇区:主机用来使能其他功能时,读取的扇区
[0027]·
存储系统密钥扇区:主机读取存储系统发送的密钥(key_s)时,读取的扇区。
[0028]·
主机密钥扇区:主机用来发送主机端密钥(key_h)给存储系统时,写入的扇区。
[0029]·
校验和扇区:主机发送校验和给存储系统时,写入的扇区。
[0030]·
校验结果扇区:主机接受存储系统校验结果时,读取的扇区。
[0031]嵌入式存储系统模块的实现,需要对其固件代码进行扩展及修改。所实现的代码可以按照的功能划分为五个部分:功能启动,存储系统密钥生成,会话密钥生成,校验和比对,校验和返回,具体为:
[0032]1.功能启动,具体为:
[0033]当嵌入式存储系统接收到读取使能扇区的命令时,启动读写其它功能扇区时触发的功能,否则读写其他功能扇区都被视为一般对扇本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于嵌入式存储系统的内核模块完整性保护系统,其特征在于:包括主机端模块和嵌入式存储系统端模块;其中,一、主机端模块即Linux内核模块,其代码实现按照功能划分为四个部分:1、分析系统在加载模块时在一些文件夹下创建的相关文件,得到代码段的加载位置;2、对内核模块文件进行分析,得到代码段大小和重定位位置信息;3.选择交互接口,用于向嵌入式存储系统模块发送具体的读写命令;4.设计校验和计算函数以及消息验证码函数;为了构建嵌入式存储系统模块,涉及的基本术语定义如下:
·
key_s:存储系统端密钥;
·
key_h:主机端密钥;
·
会话秘钥:由key_s和key_h计算生成的密钥;
·
使能扇区:主机用来使能其他功能时,读取的扇区;
·
存储系统密钥扇区:主机读取存储系统发送的密钥(key_s)时,读取的扇区;
·
主机密钥扇区:主机用来发送主机端密钥(key_h)给存储系统时,写入的扇区;
·
校验和扇区:主机发送校验和给存储系统时,写入的扇区;
·
校验结果扇区:主机接受存储系统校验结果时,读取的扇区;二、嵌入式存储系统模块的实现,需要对其固件代码进行扩展及修改;所实现的代码按照的功能划分为五个部分:功能启动、存储系统密钥生成,会话密钥生成、校验和比对、校验和返...

【专利技术属性】
技术研发人员:王岩李元章谭毓安张正刘璐张全新
申请(专利权)人:北京理工大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1