最近听到项目中要推动使用国密算法,所以来了解一下,以备不时之需~
国密简介
国密算法是国家商用密码管理办公室制定的一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)那等等。在终端设备上通常需要使用内嵌国密算法的安全芯片配合使用,倚靠安全芯片的安全性来实现密钥的存储和安全防护。
国家密码管理局网址:http://www.oscca.gov.cn/sca/index.shtml GitHub 地址(非官方):https://github.com/guanzhi/GM-Standards.git
密码算法是保障信息安全的核心技术,在一些重要的行业例如:银行业、游戏业、互联网业以前长期以来都是沿用3DES、SHA-1、RSA等国际通用的密码算法体系及相关标准。2010年底,国家密码管理局公布了我国自主研制的“椭圆曲线公钥密码算法”(SM2算法)。为保障重要经济系统密码应用安全,国家密码管理局于2011年发布了《关于做好公钥密码算法升级工作的通知》,要求“自2011年3月1日起,在建和拟建公钥密码基础设施电子认证系统和密钥管理系统应使用国密算法。自2011年7月1日起,投入运行并使用公钥密码的信息系统,应使用SM2算法。”经过多年的发展这些国密算法在国内各行各业都有了广泛的应用,为国内各行业的信息安全提供了可靠的保障。
这里分享一下一个支持国密SM2/SM3/SM4/SM9/ZUC/SSL的密码工具箱 GmSSL(点击跳转到官网)。
GmSSL GitHub 地址:https://github.com/guanzhi/GmSSL.git
GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用。GmSSL项目是OpenSSL项目的分支,并与OpenSSL保持接口兼容。因此GmSSL可以替代应用中的OpenSSL组件,并使应用自动具备基于国密的安全能力。GmSSL项目采用对商业应用友好的类BSD开源许可证,开源且可以用于闭源的商业应用。
常用国密算法概述
国密算法的密钥长度和分组长度均为128位。
- SM1算法: 对称加密算法其加密强度与AES相当。该算法不公开,仅以IP核的形式存在于芯片中。需要通过加密芯片的接口进行调用。
- SM2算法:非对称算法其实现基于ECC算法。该算法已公开,由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。 SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。SM2以其高安全性和运算快速的特点在数据安全领域应用越来越广泛。
- SM3算法:该算法为摘要算法,可以用MD5作为对比理解。校验结果为256位。适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。
- SM4算法: 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。 由于SM1、SM4加解密的分组大小为128bit,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。
- SM7算法:是一种分组密码算法,分组长度为128比特,密钥长度为128比特。SM7适用于非接触式IC卡,应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(赛事门票、展会门票),支付与通卡类应用(校园一卡通、企业一卡通等)。
Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/国密算法介绍