技术文章

当前位置:首页>帮助手册>技术文章

o2server启用国密加密设置

时间:2022-07-29   

国密算法

国密算法,即国家商用密码算法.是由国家密码管理局认定和公布的密码算法标准及其应用规范,其中部分密码算法已经成为国际标准.如SM系列密码,SM代表商密,即商业密码,是指用于商业的,不涉及国家秘密的密码技术.


介绍


SM1是一种分组加密算法

对称加密算法中的分组加密算法,其分组长度,秘钥长度都是128bit,算法安全保密强度跟 AES 相当,但是算法不公开,仅以IP核的形式存在于芯片中,需要通过加密芯片的接口进行调用.

采用该算法已经研制了系列芯片,智能IC卡,智能密码钥匙,加密卡,加密机等安全产品,广泛应用于电子政务,电子商务及国民经济的各个应用领域(包括国家政务通,警务通等重要领域).


SM2是非对称加密算法

它是基于椭圆曲线密码的公钥密码算法标准,其秘钥长度256bit,包含数字签名,密钥交换和公钥加密,用于替换RSA/DH/ECDSA/ECDH等国际算法.可以满足电子认证服务系统等应用需求,由国家密码管理局于2010年12月17号发布.

SM2采用的是ECC 256位的一种,其安全强度比RSA 2048位高,且运算速度快于RSA.


SM3是一种密码杂凑算法

用于替代MD5/SHA-1/SHA-2等国际算法,适用于数字签名和验证,消息认证码的生成与验证以及随机数的生成,可以满足电子认证服务系统等应用需求,于2010年12月17日发布.

它是在SHA-256基础上改进实现的一种算法,采用Merkle-Damgard结构,消息分组长度为512bit,输出的摘要值长度为256bit.


SM4是分组加密算法

跟SM1类似,是我国自主设计的分组对称密码算法,用于替代DES/AES等国际算法.SM4算法与AES算法具有相同的密钥长度,分组长度,都是128bit.于2012年3月21日发布,适用于密码应用中使用分组密码的需求.


SM7也是一种分组加密算法

该算法没有公开.SM7适用于非接IC卡应用包括身份识别类应用(门禁卡,工作证,参赛证),票务类应用(大型赛事门票,展会门票),支付与通卡类应用(积分消费卡,校园一卡通,企业一卡通,公交一卡通).


SM9是基于标识的非对称密码算法

用椭圆曲线对实现的基于标识的数字签名算法,密钥交换协议,密钥封装机制和公钥加密与解密算法,包括数字签名生成算法和验证算法,并给出了数字签名与验证算法及其相应的流程.并提供了相应的流程.可以替代基于数字证书的PKI/CA体系.

SM9主要用于用户的身份认证.据新华网公开报道,SM9的加密强度等同于3072位密钥的RSA加密算法,于2016年3月28日发布.

国密即国家密码局认定的国产密码算法.主要有SM1,SM2,SM3,SM4.密钥长度和分组长度均为128位.

由于SM1,SM4加解密的分组大小为128bit,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充.


国密算法的安全性


SM2算法

SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能.SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高.


SM3算法

SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求.为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短,例如MD5输出128比特杂凑值,输出长度太短,影响其安全性.SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法.


SM4算法

SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性.要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算法. 随着国密算法推广的延伸,金融领域引入SM2,SM3,SM4等算法逐步替换原有的RSA,ECC等国外算法.现有银联银行卡联网,银联IC两项规范都引入了国密算法相关要求.如下图所示为金融活动中会应用到国密算法的业务.


o2server使用国密加密

o2server v7.2 以后版本将支持国密加密.


设置方法

1.下载国密算法包 https://mvnrepository.com/artifact/com.cfca/sadk

sadk.png

2.将下载的jar包拷贝到o2server/custom/jars目录下(信创算法包请自行获取)

3.修改o2server/config/person.json设置 encryptType:"sm4"

{
    "encryptType" :"sm4"
}

4.修改重启后生效.

默认情况下使用3DES,可修改为sm4进行加密.

注意:启用之后,所有密码口令会失效,需要重置用户口令

加密不可混用.


上一篇:o2server启用定时thread dump(stack trace)功能

下一篇:导出o2server docker镜像文件实现在内网导入部署o2server docker镜像