技术干货 | 使用 mPaaS 配置 SM2 国密加密指南
简介:随着移动智能终端的广泛应用,敏感信息极易被监控或盗取,给国家、企事业及个人带来极大政治、经济损失。金融和重要领域的各个企业正在逐步落实并完成国产密码改造工作。为解决客户侧因更换加密算法造成的种种不便,mPaaS 现已支持移动网关服务兼容多种加密方式。本文将就如何生成 SM2 密钥以及完成 mPaaS 配置等问题展开详细的说明。
随着移动智能终端的广泛应用,敏感信息极易被监控或盗取,给国家、企事业及个人带来极大政治、经济损失。金融和重要领域的各个企业正在逐步落实并完成国产密码改造工作。
部分使用 mPaaS 框架的用户,因早期大多数都是在网关配置的 RSA 加密或者 ECC 加密,在政策要求下,都需要更改网关加密算法为国密。
为解决客户侧因更换加密算法造成的种种不便,mPaaS 现已支持移动网关服务兼容多种加密方式。
本文将就如何生成 SM2 密钥以及完成 mPaaS 配置等问题展开详细的说明。
生成 SM2 国密
1.1. Mac OS下
Mac OSX 一般自带的有 OpenSSL。但因为 OpenSSL“心脏病失血”事件,Mac OSX 自 10.11 El Capitan 起,将原有的 OpenSSL 替换为 LibreSSL。
在以上这些系统中应该除了实测必须要用 OpenSSL 软件外,应该都可以用 LibreSSL 取代 OpenSSL。而对于其他大多数还没有将系统自带的 OpenSSL 替换为 LibreSSL 的会麻烦一些,并且也可能做不到彻底替换。
只是对于编译安装的软件,可以尽量用 LibreSSL 取代 OpenSSL。(其他用 LibreSSL 取代 OpenSSL的系统还有:OpenBSD 自 5.6 起,Alpine Linux 自 3.5.0 起)
所以 Mac 下 OpenSSL 生成 SM2 密钥就需要自己安装 OpenSSL,网上有方式直接更改替换 Mac OS 自带的 LibreSSL,这里为了不影响 Mac 使用者的日常正常使用,不使用这种方式,而是在 Mac 上 download 一个 OpenSSL 版本安装、解压后单独使用,完全不会影响原有的 LibreSSL。
以 openssl 1.1.1d 实现为例:
STEP1 下载openssl源码
curl -o openssl-1.1.1d.tar.gz https://www.openssl.org/source/openssl-1.1.1d.tar.gz

STEP2 解压源码包
tar -xvf openssl-1.1.1d.tar.gz

STEP3 进入解压的 openssl 目录
cd openssl-1.1.1d

STEP4 配置生成 makefile
./config --prefix=/usr/local/openssl

STEP5 安装
//这里用了sudo 需要输入电脑密码,为了保证不会因为权限不足而安装报错
sudo make install

STEP6 设置 openssl lib .so 加载配置
//此步骤可以忽略,so加载配置与否不影响使用生成SM2
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v

STEP7 生成SM2密钥
i. 进入生成密钥文件的目录,执行以下命令生成私钥
/usr/local/openssl/bin/openssl ecparam -genkey -name SM2 -out SM2PrivateKey.pem

ii. 进入生成密钥文件的目录,生成公钥
/usr/local/openssl/bin/openssl ec -in SM2PrivateKey.pem -pubout -out SM2PublicKey.pem


1.2. Windows下
同样 Windows 下也是需要一些途径才能生成 SM2 国密密钥。
OpenSSL 官网没有提供 Windows 版本的安装包,可以选择其他开源平台提供的工具。下载地址:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions
STEP1 下载工具
选择 32 位或者 64 位合适的版本下载,例如 Win64OpenSSL_Light-1_0_2h.exe。
STEP2 安装 Win64OpenSSL 软件
设置环境变量,自行确定安装位置。
STEP3 打开 Win64OpenSSL 软件,运行以下命令:
ecparam -genkey -name SM2 -out priv.key

ec -in priv.key -pubout -out pub.key
配置 mPaaS 国密
1. 初次配置加密
1.1. 开发平台配置
STEP1 登录 mPaaS 控制台 -> 移动网关 -> 网关管理 -> 数据加密 -> 打开
STEP2 打开后会弹出选择加密方式和密钥的弹出,选 SM2 并填写对应的私钥密钥。
1.2. 客户端配置
1.2.1. iOS端
iOS客户端的加密方式和公钥是配置在info.plist下的,详情见图
其中:
- mPaaSCrypt:加密配置的主 key,value 是 Dictionary 类型,里面包含了客户端加密所需设置的相关信息。
- Crypt:是否进行加密,value 是 Boolean 类型,YES 代表加密,NO 代表不加密。
- GWWhiteList: 需要进行加密的网关,即当前环境的网关地址。如果没有该 key ,则所有的请求 都不会加密。
- RSA/ECC/SM2:非对称加密算法选择,value 是 String 类型,只能填 RSA 或 ECC 或 SM2。
- PubKey:非对称加密公钥。value 是 String 类型,与选择的非对称加密算法保持一致。
注:iOS端PubKey 的格式必须携带 -----BEGIN PUBLIC KEY----- 及 -----END PUBLIC KEY-----。不允许有空格、自行换行等,格式不可错误。
1.2.2. Android端
Android 端的加密方式和公钥是配置在mpaas_netconfig.properties 文件下,如图:
其中:
- Crypt:表示是否使用自加密,true 表示使用,false 表示关闭自加密功能。
- RSA/ECC/SM2:表示要使用的非对称加密算法,其值只能填充 RSA 或 ECC 或 SM2。
- PubKey:表示选择的非对称加密算法的公钥。
- GWWhiteList: 需要进行加密的网关,即当前环境的网关地址。如果没有该 key ,则所有的请求都不会加密。
注:由于 Android 中 properties 文件的 value 值需要在同一行,因此填充公钥时需注意。
2.更换配置加密
2.1. 开发平台配置(注:MGS 版本需 >=1.34.10)
STEP1 打开移动开发平台->移动网关->网关管理:当前网关已经开启了数据加密(这里示例是RSA)
STEP2 这时更换国密,需要提前准备一对已生成的 SM2 公、私钥。参考:密钥生成方法 - 移动开发平台 mPaaS - 阿里云
STEP3 在控制台-网关管理下,先关闭数据加密,再立刻开启数据加密,这里会出现重新选择加密算法和填写对应密钥的弹窗,如下图:
注:必须要先关闭再开启,所以请务必先提前生成好对应的 SM2 公、私钥,且保证正确性和正确格式。
STEP4 将 SM2 的私钥按正确格式填写到输入框内,点击提交。之后就能在这里看到已经配置好的两种加密方式:
介此,网关更换密钥操作已完成。
2.2. 客户端配置
2.2.1. iOS端
STEP1 iOS 客户端的加密方式和公钥是配置在 info.plist 下的,详情见图:
STEP2 此时将已生成好的 SM2 公钥按正确格式替换上述 info.plist 里 PubKey 的 value,加密算法更改为 SM2。
介此,iOS 端加密方式和公钥也已更换完毕。
2.2.2. Android端
STEP1 Android 端的加密方式和公钥是配置在 mpaas_netconfig.properties 文件下的,如图:
STEP2 此时将已生成好的 SM2 公钥按正确格式替换上述 mpaas_netconfig.properties 里的对应 value,更换后如下图:
介此,Android 端加密方式和公钥已更换完毕。
2.3. 小结
此时服务端和客户端均已更换加密方式完毕,旧版 App 依然可以正常访问网关,新版 App 也是可以正常访问网关的,后续需要等待旧版App用户完全升级后,修改掉网关旧的加密方式即可,当然一直保留也可以的。
结语
从生成自己的国密 SM2,到完整配置加密方式。客户端到 mPaaS 网关已满足各项政策对 App 数据加密方式的要求。
同时 mPaaS 团队也将在更完备支持全链路国密的道路上,而努力前进。后续会发布更全面、更方便、更深层次的国密支持方案。
本文作者:阿里云 mPaaS TAM 团队(御雪 荣阳)
原文链接
本文为阿里云原创内容,未经允许不得转载。
技术干货 | 使用 mPaaS 配置 SM2 国密加密指南的更多相关文章
- C#实现SM2国密加密
本文主要讲解"国密加密算法"SM系列的C#实现方法,不涉及具体的算法剖析,在网络上找到的java实现方法比较少,切在跨语言加密解密上会存在一些问题,所以整理此文志之.JAVA实现参 ...
- SM2国密证书合法性验证
通常我们遇到过的X509证书都是基于RSA-SHA1算法的,目前国家在大力推行国密算法,未来银行发行的IC卡也都是基于PBOC3.0支持国密算法的,因此我们来学习一下如何验证SM2国密证书的合法性.至 ...
- 国密算法SM2证书制作
国密算法sm2非对称算法椭圆曲线 原文:http://www.jonllen.cn/jonllen/work/162.aspx 前段时间将系统的RSA算法全部升级为SM2国密算法,密码机和UKey硬件 ...
- OpenSSL 1.1.1 国密算法支持
OpenSSL 1.1.1 国密算法支持 https://www.openssl.org/ https://github.com/openssl/openssl OpenSSL 1.1.1 新特性: ...
- SM 国密算法踩坑指南
各位,好久不见~ 最近接手网联的国密改造项目,由于对国密算法比较陌生,前期碰到了一系列国密算法加解密的问题. 所以这次总结一下,分享这个过程遇到的问题,希望帮到大家. 国密 什么是国密算法? 国密就是 ...
- crypto-gmsm国密算法库
crypto-gmsm国密算法库 一.开发背景 crypto-gmsm国密算法库是国密商密算法(SM2,SM3,SM4)工具类封装,国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,目前主 ...
- 关于国密算法 SM1,SM2,SM3,SM4 的笔记
国密即国家密码局认定的国产密码算法.主要有SM1,SM2,SM3,SM4.密钥长度和分组长度均为128位. SM1 为对称加密.其加密强度与AES相当.该算法不公开,调用该算法时,需要通过加密芯片的接 ...
- bouncycastle 国密SM2 API的使用
摘要:本文不对SM2做过多的介绍,主要介绍java bouncycastle库关于SM2的相关API的使用及注意事项 1. SM2 签名: 注意: 1)签名格式ASN1(描述了一种对数据进行表示.编码 ...
- 谈谈PBOC3.0中使用的国密SM2算法
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/39780825 作者:小马 一 知识准备 SM2是国密局推出的一种他们自己说具有自主 ...
- 推荐一款能支持国密SM2浏览器——密信浏览器
密信浏览器( MeSince Browser )是基于Chromium开源项目开发的国密安全浏览器,支持国密算法和国密SSL证书,同时也支持国际算法及全球信任SSL证书:密信浏览器使用界面清新,干净. ...
随机推荐
- dbvisualizer之编辑区中文乱码问题
!在SQL Commander中,sql语句中如果有中文,显示是'口口口'. 解决办法如下: 在Tools->tool Properties->General->Appearance ...
- NJUPT自控第一次积分赛的小总结(一)题目感受
快开学了事情真的好多啊 -_- 忙完积分赛就赶紧要去复习期末了...线代还是依托答辩啥都不懂 先看题目吧,RT,我们队(我)选择的是第一题(仅仅是因为很简单罢啦) 一开始看题目,心想不就调调pid吗, ...
- 喜报|3DCAT入选“灵境杯”深圳市最佳元宇宙案例!
2022年11月10日~11日,2022全球元宇宙大会深圳站胜利召开,在本次大会上重磅发布"灵境杯"全球元宇宙创新大赛成果,公布深圳最具潜力元宇宙入选企业. 创新大赛结合" ...
- UE4 c++重构简单死亡之眼的效果
虚幻社区中有蓝图教学视频 使用C++重构,主要用到UGameplayStatics类中的SetGlobalTimerDilation方法,以及角色的相机管理器的调用,之后通过StartCameraFa ...
- virtualbox安装windows10出现OOBE,卡在OOBE。
参照 https://zhuanlan.zhihu.com/p/419237209 https://www.0z.gs/win/781.html 文档 https://learn.microsoft. ...
- Python正则表达式提取方法
- Web、Android等程序开发中src引入外部文件和资源的方法总结
方法一:使用相对于当前文件(源文件)的相对路径 使用 ../ 对于这个例子来说 ../ 把路径带到了项目根目录的下一级目录 1 <script src="../static/js/wo ...
- #子序列自动机,vector#洛谷 3500 [POI2010]TES-Intelligence Test
题目 多组询问查询某个串是否为模式串的子序列 分析 考虑用子序列自动机做,匹配的时候显然选择靠前的,用个vector查询最近的就行了 代码 #include <cstdio> #inclu ...
- #深搜,期望#CF105B Dark Assembly
洛谷题目传送门 CODEFORCES传送门 分析 题目强调贿赂要在投票开始前完成说明分糖和成功率可以分开计算 那么分糖考虑直接暴搜,由于题目并没有说糖必须全部分完, 所以每一次分完一颗糖后均要求当前状 ...
- 重磅官宣,OpenHarmony开发者大会来了!
开放原子开源基金会OpenHarmony开发者大会2023将于4月19日在北京召开. 春风送暖万物新,OpenHarmony正当时.诚邀您参加本届大会,聆听行业大咖分享操作系统和开源的最新前沿研究成 ...