/GM-Intech

国密算法/国标VPN/国密浏览器

Primary LanguageShell

国密

国密VPN/国密浏览器/国密网关

国密算法

  • 软算法-OpenSSL/BoringSSL
  • 硬件支持-国密USB KEY(海泰方圆、飞天诚信、渔翁科技),使用OpenSSLengine源码方式(包括Windows和Linux平台)

软算法:

  • 算法添加方式,从零添加完整的(SM2/3/4)算法实现
  • 源码测试demo
  • 说明文档

国标USB KEY:

  • 使用 OpenSSL 提供的 engine 实现对国密 USB KEY 支持
  • engine 便于添加和移除新硬件(测过海泰方圆、飞天诚信和渔翁科技的国密 USB KEY
  • BoringSSLengine 实现

国标VPN

《GM/T 0024-2014 SSL VPN技术规范》OpenSSL/BoringSSL 的实现,实现的VPN能够与国家商用密码检测中心的测试机通信,并详细说明哪些部分与标准文档中有差异,便于了解实现流程。

基于OpenSSL开源的国密VPN工程有GmSSLTaSSL TaSSL-1.1.1b,有兴趣的可以参考其实现方式。最新的OpenSSL-3.x.x算法添加方式与以往的版本存在差异。

GmSSL实现了nginx/apache/tomcat版本的国密,myssl提供了国密测试功能,类似ssllabs.

  • 国密证书 - 支持使用SM2certgen.sh脚本生成证书,自定义配置参数
  • 国标双证书demo
  • OpenSSL的阻塞通信方式

国密浏览器

Chromium源码集成国标VPN协议,实现国密通信。实现方式可以通过白名单放行或者自适应TLS和国密VPN协议,对两种实现方式做简单描述:

  • 白名单放行-通过配置国密 URL 地址来适配国密VPN协议,只有在配置在白名单的网址才能使用过VPN通道
  • 自适应协议-根据请求的网址,内核内部自动处理,响应相关的TLS或国密VPN协议

之前在公司见过另一种实现方式,但不推荐使用此方式,具体方法是在原有的HTTP流程注入TLS协议,可以使用OpenSSL或者其它第三方实现国密VPN套件,打断原有的HTTP流程,在通信建立后数据传输前添加国密TLS流程,达到实现HTTPS的方式。

对于上述两种方案,第一种已经实现并在Windows端测试正常,并与国内的国密浏览器做相应测试**银行,性能突出。 目前还有ovssl此服务器可以测试国密VPN,但需要使用具备国密VPN通信的浏览器,否则为TLS协议

GmSSL完善

添加sm2dhe的SM2_compute_share_key的实现方式,具体内容参考《GM/T 0009-2012 SM2 密码算法使用规范》的9.6内容。

OpenSSL3.0国密套件

openssl3.0文件夹内包含了最新的openssl代码支持国密0024-2014的E013密码套件的静态库,头文件,可执行文件openssl和测试用例。

  • 国密测试:openssl s_client -smtls -msg -debug -connect ebssec.boc.cn:443
  • TLS测试:openssl s_client -tls1_2 -msg -debug -connect www.baidu.com:443