[toc]

openbsd-compat.zip 和 regress.zip请解压缩后再使用

proj111_基于openssl实现远程SSH登录的国密改造

项目简介

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算法,并能够使用这种密钥交换算法进行登录;

实现思路

在linux系统上运行openssh,初步比较相关算法性能

通过编译并运行openssh社区的openssh-8.8p1,修改openssh的配置文件,使用各类支持的密钥交换、公钥认证、完整性认证、对称加密算法进行SSH登录, 初步比较各类算法的性能。

基于openssh-8.8p1代码包,通过向其中导入sm系列的相关函数以及参数,实现国产密码的可用

在openssh的完整性认证mac以及库中包含的其他涉及的文件中加入hmac-sm3算法及其参数,实现对sha系列算法的替换

在openssh的对称加密算法cipher.c以及其依赖的其他文件中加入sm4-ctr算法及其参数,实现对aes/des系列算法的替换

在openssh的密钥交换、公钥认证、密钥生成和扫描算法和其依赖的文件中加入sm2dh算法及其参数,实现对rsa等算法的替换

通过设计IF_SM_APPLIED宏,设计相关配置文件,实现使用国产密码进行消息认证登陆以及多种算法模式的切换

通过定义相关配置文件以及设置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原始库中文件众多,故只列出仓库中新增的、修改的文件。
(注:带*为新增文件)

-(待补充)

使用说明

(待完成)

总结

(待完成)

团队介绍以及分工

(待补充)

成员 分工
郑昌乾 程序设计以及调研
严小桐 文档纂写和协助程序设计
杜恩俊 程序测试和协助程序设计

参考资料