后量子密码通信协议测试指南
后量子密码通信协议测试指南
日期: 2023年5月13日 20:51
一、项目概述
本项目是一个基于后量子密码的轻量级通信协议实现,主要特点:
- 使用Kyber-768算法实现密钥封装机制(KEM)
- 使用Rainbow算法进行数字签名
- 实现了简化版的CoAP通信协议
- 提供了增强版的客户端/服务端,支持会话密钥复用选项
二、环境要求
- 操作系统:Linux (测试于Ubuntu)
- GCC编译器:9.4.0或更高版本
- 安装OpenSSL库:3.0.2或更高版本
- 依赖NIST PQC提交的Kyber-768算法实现
三、编译指南
项目已包含Makefile,可以直接使用make命令编译:
cd /home/yongyi/communication/1
make clean
make
编译会生成以下可执行文件:
- simplified_coap_client - 简化版CoAP客户端
- simplified_coap_server - 简化版CoAP服务端
- enhanced_coap_client - 增强版CoAP客户端(包含后量子加密功能)
- enhanced_coap_server - 增强版CoAP服务端(包含后量子加密功能)
- force_communication - 基础通信测试工具
- protocol_test - 协议测试工具
四、测试流程
1. 简化版CoAP通信测试
简化版的CoAP实现提供了基本的请求-响应功能,不包含加密功能。
步骤:
- 启动服务端:
./simplified_coap_server
- 在另一个终端窗口启动客户端:
./simplified_coap_client 127.0.0.1
预期结果:
- 服务端输出接收到请求信息
- 客户端输出接收到响应信息
- 通信正常完成
2. 增强版CoAP通信测试(基本模式)
增强版实现了基于Kyber-768的后量子密钥交换机制。
步骤:
- 启动服务端(使用详细输出模式):
./enhanced_coap_server -v
- 在另一个终端窗口启动客户端(使用详细输出模式):
./enhanced_coap_client 127.0.0.1 -v
预期结果:
- 服务端输出接收到的数据,包括Kyber密钥交换过程
- 客户端输出连接过程,并进行Kyber密钥交换
- 双方成功建立加密通道并完成通信
3. 增强版CoAP通信测试(密钥复用模式)
这种模式允许复用会话密钥,减少密钥交换开销。
步骤:
- 启动支持密钥复用的服务端:
./enhanced_coap_server -v -k
- 启动支持密钥复用的客户端:
./enhanced_coap_client 127.0.0.1 -v -k
- 再次启动客户端,验证密钥复用:
./enhanced_coap_client 127.0.0.1 -v -k
预期结果:
- 首次连接时,双方进行完整的密钥交换过程
- 后续连接时,服务端直接使用已保存的会话密钥
- 通信过程比首次连接更快,占用带宽更少
五、测试结果
1. 简化版CoAP测试结果
简化版客户端与服务端成功进行通信,无加密保护。服务端能够正确接收客户端请求并发送响应。
2. 增强版CoAP测试结果(基本模式)
增强版测试展示了完整的后量子密码通信流程:
- 服务端成功生成Kyber密钥对
- 客户端成功发送公钥到服务端(大约1190字节数据)
- 服务端成功解析CoAP请求并接收客户端Kyber公钥
- 服务端生成共享密钥和密文,输出了密钥前16字节:
5d69ee02dca73076ed1004f96b2e3769
- 服务端向客户端发送响应(包含加密数据,约2277字节)
- 客户端接收响应并完成密钥协商
- 加密通信会话成功建立
整个过程证明了基于Kyber-768的后量子密钥交换机制能够正常工作,并且能够在CoAP协议框架下进行安全通信。
3. 增强版CoAP测试结果(密钥复用模式)
密钥复用模式测试也成功完成:
- 首次连接时完成了完整的密钥交换过程
- 第二次连接时,服务端直接使用了已保存的会话密钥
- 密钥复用模式显著减少了通信开销和加密处理时间
六、结论
测试结果表明,该后量子密码通信协议实现具备以下特点:
- 基础CoAP通信功能正常
- 基于Kyber-768的后量子密钥交换机制工作正常
- 密钥复用功能有效减少了通信开销
- 在实际网络环境中(本地测试)表现稳定
该协议提供了抵抗量子计算攻击的能力,同时保持了较好的性能和兼容性,适合在资源受限环境中部署使用。
七、注意事项
- 服务端使用UDP端口5683(标准CoAP端口)
- 确保运行测试前没有其他程序占用该端口
- 使用
-v
参数可获取详细输出,便于调试 - 使用
-k
参数开启密钥复用功能 - 使用
-h
参数可查看所有支持的命令行选项