2021SC@SDUSC
一、项目背景
某公司研发了一款高速加密卡(对称加密10Gbit/s以上),可以配合Linux内核中的密码子系统和dm-crypt模块实现磁盘分区加密等应用,做企业保密存储服务器。实际使用中发现:由于dm-crypt模块的循环结构每次处理512个字节(一个sector),导致无法发挥加密卡的全部性能,分析发现需要在dm中使用scatter/gather高速IO技术以提高性能。在Linux内核中修改代码,具有极大挑战性。这是本项目一期工作,已经完成,实现了IO速度从80M字节提高到约1G字节每秒的跃进,达到了预期效果,已用于生产。
由于公司推出了新的、更快的加密卡,因此展开项目的二期工作,计划使用异步和多线程机制以完全发掘新加密卡的性能。
二、项目目标
学习Linux内核源码,掌握Linux内核编译、Linux内核开发、Linux设备驱动程序的使用。
在充分了解一期工作源码的基础上,着重学习、分析、修改Linux内核中的密码子系统、异步队列、内核多线程、模块和驱动等技术,主要修改dm-crypt.c等模块源文件的代码,实现对于异步密码算法(包括软件形式和/或硬件形式)的支持。
本工作有重要实用价值,代码争取可以提交到Linux的git树,希望Linux能采纳。
三、环境搭建
安装Source insight,windows下阅读源码 。
安装LXR,Linux下阅读源码。
虚拟机中安装编译Linux内核的工作环境。
创建writeup的git仓库,用于交流
四、核心代码
https://elixir.bootlin.com/linux/latest/source/drivers/md/dm-crypt.c#L1414
五、项目分工
- 内核模块的开发
主要是 SM4 国产加密算法的使用 - DM-Crypt 模块的开发与改写
#1414 行函数的上下文的改进