我的理解是这样的:
国密算法: 就是哪些 sm2 ,sm3 ,sm4 那些,这些算法实现相对容易(不考虑性能的话),openssl 在 1.1 就支持了 sm2 ,sm3 ,sm4
国密 TLS: 在原有的 TLS 加密套件基础上,添加使用国密的加密算法,头保护算法,摘要算法的加密套件,这时候就要在大家常用的 openssl 的 TLS 接口内部去兼容国密的加密套件, 北大的 gmssl 就实现了这些。
支持国密 TLS 的 QUIC: 上边提到的 gmssl 只丰富了了 tcp/http1/http2 上用 tls 接口, 而 quic 调用 TLS 接口的时候用法略有不同,当前 openssl3.5 已经支持 quic 的接口,但是只支持
● TLS_AES_128_GCM_SHA256
● TLS_AES_256_GCM_SHA384
● TLS_CHACHA20_POLY1305_SHA256
这三种加密套件。
阿里巴巴的铜锁项目成员提交了 RFC8998 ,提出了 TLS_SM4_GCM_SM3 ,TLS_SM4_CCM_SM3 这两个加密套件。并且 tongsuo 支持这两个加密套件,但遗憾的是同样是他们维护的 xquic 却不支持(不知道这么久了为什么还不支持,担心是不是有坑,现在的设计还不完善等)
幸运的是 njet 项目宣称支持了国密的 QUIC ,但它只能做服务端,我还需要一个客户端。 现在能做的就是尝试借助
deepwiki.com 和 sonnet4 修改 xquic 了。
我非常希望有个人能告诉我,现在 quic 上使用国密算法设计尚且有问题,不用瞎搞了。