[toc]
2020年1月1日,《中华人民共和国密码法》正式实施,从法律层面规范了国家商用密码的应用和管理,这也为推广和应用国密提供了必要的法律保障。目前的openssl目前已经支持了sm2/sm3/sm4国密算法,国密算法目前主要用于浏览器的https应用中。网络应用中仍然有其他协议中使用了加密算法,本赛题希望能够改造当前主流的SSH登录软件以支持国密算法。本项目旨在改造当前主流的SSH登录软件,以支持国密算法。通过深入分析SSH协议的工作原理和加密机制,我们计划将国密算法(SM2、SM3、SM4等)集成到SSH协议中,并实现相应的密钥交换、数据加密、数据完整性验证等功能。改造后的SSH登录软件将能够在保证兼容性的同时,提高数据传输的安全性和可信度,为用户提供更加安全可靠的远程登录和文件传输服务。在选择改造的SSH协议软件时,我们将综合考虑软件的流行度、易用性、可维护性等因素,并结合项目的实际需求和技术难度,选择openssh进行改造。通过本项目的实施,我们希望能够推动国密算法在SSH协议中的广泛应用,为网络安全领域的发展做出积极贡献。
基于openeuler的openssl提供的国密算法改造openssh,使之改造后能够生成国密算法的密钥,并能使用国密算法自登录,改造SSH协议软件涉及到底层加密算法的集成和高层通信协议的修改,技术难度较大。我们将通过深入研究相关文档和源代码,逐步攻克技术难点。
基于openeuler的openssl提供的国密算法改造paramiko/libssh/apache-sshd,使之能兼容上面修改的openssh,改造后的软件需要保持与原有软件的兼容性,确保互操作性。我们将通过充分的测试来验证改造后的软件的兼容性。
目标一:基本的环境搭建和熟悉
在linux系统上编译并运行openssh社区的openssh-8.8p1,也可以使用openEuler系统上的openssh-8.8p1-1.oe1源码编译。 修改openssh的配置文件,使用各类支持的密钥交换、公钥认证、完整性认证、对称加密算法进行SSH登录, 初步比较各类算法的性能。
目标二:将openssl提供算法库中的sm3/sm4国密算法适配到openssh中
在openssh的完整性认证mac中加入hmac-sm3算法,并能够通过配置这种算法登录; 在openssh的对称加密算法cipher中加入sm4-ctr算法,并能够通过配置这种算法登录;
目标三:将openssl提供算法库中的sm2国密算法适配到openssh中
适配ssh-keygen和ssh-keyscan命令,试它们能够生成和扫描sm2类型的密钥; 在openssh的公钥认证算法pubkeyacceptedkeytypes中加入sm2算法,并能够使用sm2密钥进行登录; 在openssh的密钥交换算法中加入sm2dh算法,并能够使用这种密钥交换算法进行登录;
通过编译并运行openssh社区的openssh-8.8p1,修改openssh的配置文件,使用各类支持的密钥交换、公钥认证、完整性认证、对称加密算法进行SSH登录, 初步比较各类算法的性能。
在openssh的完整性认证mac以及库中包含的其他涉及的文件中加入hmac-sm3算法及其参数,实现对sha系列算法的替换
在openssh的对称加密算法cipher.c以及其依赖的其他文件中加入sm4-ctr算法及其参数,实现对aes/des系列算法的替换
在openssh的密钥交换、公钥认证、密钥生成和扫描算法和其依赖的文件中加入sm2dh算法及其参数,实现对rsa等算法的替换
通过定义相关配置文件以及设置IF_SM_APPLIED,实现配置IF_SM_APPLIED后可以编译相关的代码,实现对sm系列国产密钥算法的支持
任务 | 时间 | 进度 |
---|---|---|
调研ssh的实现原理,了解ssh实现中使用的加密算法以及具体实现 | 24.4.22-24.4.28 | 已完成 |
下载openssh代码包,和对应的openssl包,进行代码分析 | 24.4.29-24.5.6 | 已完成 |
对原始文件包中的部分文件开始尝试添加和修改调用函数 | 24.5.7-24.5.12 | 已完成 |
配置gitlab仓库,上传openssh原始代码包并开始修改 | 24.5.12-24.5.14 | 已完成 |
修改有关公钥加密算法的函数,将sm2国密算法适配到openssh中 | 24.5.14-24.5.28 | 已完成 |
修改完整性认证mac等文件,将sm3国密算法适配到openssh中 | 24.5.23- | 进行中 |
修改对称加密算法cipher,将sm4国密算法适配到openssh中 | 24.5.23- | 进行中 |
编写项目文档 | 24.5.28- | 进行中 |
添加宏定义IF_SM_APPLIED 作为导入sm系列函数的整体宏定义 | 待定 | 计划 |
调试代码,解决在ssh执行过程中遇到的问题,实现功能可用 | 待定 | 计划 |
配置相关文件,测试运行速率,与其他算法进行比较 | 待定 | 计划 |
(远期目标)进行功能扩展,进行前端优化,实现多操作系统的适配性 | 待定 | 计划 |
(待完成)
此次对openssh实现的国密改造,我们基于openssh-8.8p1的程序包,通过修改、新增程序实现对openssh的导入。由于openssh原始库中文件众多,故只列出仓库中新增的、修改的文件。
(注:带*为新增文件)
-(待补充)
(待完成)
(待完成)
(待补充)
成员 | 分工 |
---|---|
郑昌乾 | 程序设计以及调研 |
严小桐 | 文档纂写和协助程序设计 |
杜恩俊 | 程序测试和协助程序设计 |