【“麒麟杯”获奖作品风采】二等奖:ELF文件签名验证工具
由中国软件行业协会、开放原子开源基金会、中国计算机学会开源发展委员会、中国开源软件推进联盟指导,openKylin开源社区、麒麟软件有限公司、国防科技大学、信创海河实验室联合主办的第十二届“麒麟杯”全国开源应用软件开发大赛已于10月20日完美落幕,自2023年4月开赛以来,吸引了来自全国60+高校的345组队伍报名参赛,经过层层选拔和严格评审,最终评选出大赛的一、二、三等奖及优胜奖,后续主办方将陆续展示开发者们的获奖作品风采,本篇带来二等奖《ELF文件签名验证工具》作品展示!
用户态签名程序可由系统开发者或系统管理员执行,对用户需要执行的ELF文件进行签名; 签名程序包含了用户友好的GUI和基于命令行的工具。系统管理员可以通过签名程序对ELF文件进行批量签名、验签,提升工作效率。验签模块还基于openKylin系统通知总线对用户提供了验证失败通知,直观地告知用户软件验证失败及具体失败原因。对于验证流程,本软件还实现了对Linux上运行的ELF文件及其引用的动态库的完整签名验证,大大增强了安全性。
作品地址:https://gitee.com/openkylin/kylin-elf-verification
相关软件界面截图如下:
1. 批量签名功能
2. 批量验签功能
3. 未签名/签名错误软件执行前拦截
签名验签支持使用国产商密算法(SM3+SM2),对比SHA+RSA,使用国密算法生成的签名长度更短,且国产算法自主可控,安全性更有保障。 采用可移植的代码设计,同时支持在RISC-V和X86两种架构上的openKylin系统上运行,且实测在StarFive开发板上可以顺利运行,为国产硬件/操作系统提供了重要的软件生态,实现了国产化全链路的闭环。 内核态用户态通过Netlink实现高效地交互,降低开启安全功能带来的系统额外开销,同时结合openKylin系统消息总线,验证结果可以更直观地通知用户。 验签模块可以根据用户需求,设置不同的安全等级,在验签效率和安全性间权衡。在开启最高安全等级时,验签模块除了验证可执行文件本身外,还会自动检测其依赖的动态库文件,递归验证ELF文件依赖的动态库,做到签名验证的无死角 项目技术架构图如下所示: (1)签名工具