国产密码算法及应用
- 格式:doc
- 大小:149.00 KB
- 文档页数:11
版本人员时间升级内容❝课程目的◦了解国密算法的算法原理◦了解SM2、SM3、SM4的算法原理◦了解国密卡片相关API❝目标人员◦移动金融初级开发人员❝前置课程◦RSA密钥体系◦DES密钥体系❝基本知识❝对称加密算法SM2❝非对称加密算法SM4❝摘要算法SM3定义国密即国家密码局认定的国产密码算法,即商用密码,主要完成加密、解密、签名、验签、摘要等操作。
常用国密算法种类算法类型密钥长度输入数据要求输出数据特征SM2非对称加密算法公钥64字节,私钥32字节。
长度小于(2^32-1)*32=137,438,953,440字节(大约1374亿多)。
输出长度是明文长度+96,有随机数参数,每次密文不同。
SM3摘要算法--无要求。
固定长度,32字节。
SM4对称加密算法16字节分组长度16字节,需要填充到16字节整数倍。
有CBC和ECB两种模式,CBC需要设定初始值。
长度为16字节整数倍。
国密算法还有SM1、SM7、SSF33、祖冲之密码对称加密算法,SM9非对称加密算法。
国密算法与其他算法比较非对称加密算法SM2与RSA比较国密算法与其他算法比较SM2与RSA算法的一些统计数据RSA密钥强度(长度)SM2密钥强度(长度)破解时间(年)521比特106比特104(已破解)768比特132比特108(已破解)1024比特160比特10112048比特210比特1020国密算法与其他算法比较SM2与RSA算法的一些统计数据算法签名速度验签速度1024RSA2792次/秒51224次/秒2048RSA455次/秒15122次/秒256SM24095次/秒871次/秒国密算法与其他算法比较SM4与DES较从算法上看,国产SM4算法在计算过程中增加非线性变换,理论上能大大提高其算法的安全性,并且由专业机构进行了密码分析,民间也对21轮SM4进行了差分密码分析,结论均为安全性较高。
国密卡实现API类层次图class ng.Object◦class com.guomi.GMCipher◦class com.guomi.GMKeyBuilder◦class com.guomi.GMKeyPair◦class com.guomi.GMMessageDigest ◦class com.guomi.GMSignature◦class com.guomi.GMCipherExtend◦class com.guomi.GMSM2KeyExchange国密卡实现的API接口interface javacard.security.Key◦interface javacard.security.SecretKeyinterface com.guomi.SM1Keyinterface com.guomi.SM4Keyinterface com.guomi.SM7Keyinterface com.guomi.SSF33Key◦interface javacard.security.PrivateKey interface com.guomi.SM2PrivateKey ◦interface javacard.security.PublicKeyinterface com.guomi.SM2PublicKey国密卡实现的API接口interface com.unionpay.guomi.SM2Key ◦interface com.guomi.SM2PrivateKey◦interface com.guomi.SM2PublicKey目录❝算法原理❝加密❝解密❝签名❝验签算法原理❝国密SM2规定椭圆曲线参数(固定值,256比特)◦p :FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF◦a:FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC◦b:28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93◦n:FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123◦gx:32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7◦gy:BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0❝各个参数意义如下椭圆曲线方程:y2=x3+ax+b,把它定义在Fp上, 要求a,b满足:4a3+27b2≠0(mod p)那么,p 、a 、b 用来确定一条椭圆曲线(确切来说应该是有限域Fp),G(gx,gy)为基点,n为点G 的阶,另外,还有一个非必要参数h,是椭圆曲线上所有点的个数m与n相除的整数部分;加密SM2公私玥结构、◦SM2公私玥关系P=d*G 或者(x ,y )=d*(gx ,gy ),即公钥P 是基点G 的d 倍点。
国密是什么
国密即国家密码局认定的国产密码算法,即商用密码。
国密主要有SM1,SM2,SM3,SM4。
密钥长度和分组长度均为128位。
1、SM1 为对称加密。
其加密强度与AES(高级加密标准,Advanced Encryption Standard)相当。
该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
2、SM2为非对称加密,基于ECC。
该算法已公开。
由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。
ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。
3、SM3为消息摘要。
可以用MD5作为对比理解。
该算法已公开。
校验结果为256位。
4、SM4为无线局域网标准的分组数据算法。
对称加密,密钥长度和分组长度均为128位。
由于SM1、SM4加解密的分组大小为128bit,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。
国密应用
商用密码的应用领域十分广泛,主要用于对不涉及国家秘密内容但又具有敏感性的内部信息、行政事务信息、经济信息等进行加
密保护。
商用密码可用于企业门禁管理、企业内部的各类敏感信息的传输加密、存储加密,防止非法第三方获取信息内容;也可用于各种安全认证、网上银行、数字签名等。
例如:在门禁应用中,采用SM1算法进行身份鉴别和数据加密通讯,实现卡片合法性的验证,保证身份识别的真实性。
安全是关系国家、城市信息、行业用户、百姓利益的关键问题。
国密芯片卡国密芯片卡,是指采用国产SM2和SM4算法的芯片卡。
它是一种新型的密码芯片卡,具有较高的安全性和可靠性,广泛应用于政府、金融、电信等领域。
国密芯片卡采用了SM2算法,是中国自主研发的一种椭圆曲线公钥密码算法,是国家密码管理局指定的我国密码标准。
相较于传统的RSA算法,SM2算法具有更高的安全性和效率。
它利用了椭圆曲线上的离散对数问题,在保证安全性的同时,提高了加密和解密速度。
国密芯片卡还采用了SM4算法,是一种分组密码算法,也是国家密码管理局指定的我国密码标准。
相较于传统的AES算法,SM4算法具有更高的安全性和效率。
它以32位的密钥为基础,通过多轮迭代和S盒变换实现数据的加密和解密。
国密芯片卡除了采用了先进的密码算法外,还具有其他一些重要的特性。
首先,它具有硬件加密功能,利用专门的加密硬件芯片来进行加密运算,实现高速、安全的数据加密和解密。
其次,它具有物理隔离功能,将关键的加密密钥和数据存储在芯片内部,防止被非法获取和篡改。
再次,它具有多重认证功能,可以在芯片卡上存储多种认证方式,如指纹、密码等,增强了系统的安全性。
国密芯片卡在应用领域上具有广泛的应用前景。
首先,在政府领域,国密芯片卡可以用于身份证、护照等身份证明文件的加密存储和认证功能,提高了身份信息的安全性。
其次,在金融领域,国密芯片卡可以用于银行卡、电子钱包等支付工具的加密和认证功能,保护了用户的资金安全。
再次,在电信领域,国密芯片卡可以用于SIM卡的加密认证,防止SIM卡被复制和篡改。
总之,国密芯片卡是一种具有较高安全性和可靠性的密码芯片卡,广泛应用于政府、金融、电信等领域。
它采用了国产的SM2和SM4算法,在保证安全性的同时,提高了加密和解密速度。
国密芯片卡具有硬件加密、物理隔离和多重认证等功能,具有广阔的应用前景。
首先来看一下什么是国密算法:国密即国家密码局认定的国产密码算法,即商用密码。
国密主要有SM1,SM2,SM3,SM4。
密钥长度和分组长度均为128位。
1、SM1 为对称加密。
其加密强度与AES(高级加密标准,Advanced Encryption Standard)相当。
该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
2、SM2为非对称加密,基于ECC。
该算法已公开。
由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。
ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。
3、SM3为消息摘要。
可以用MD5作为对比理解。
该算法已公开。
校验结果为256位。
4、SM4为无线局域网标准的分组数据算法。
对称加密,密钥长度和分组长度均为128位。
由于SM1、SM4加解密的分组大小为128bit,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。
在很多地方还是会用到的,这里说一下这个:SM21.在pom.xml中引入依赖jar包:<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.58</version></dependency>2.然后来写一个工具类,用来生成国密的,公钥和私钥这个密码对.import org.bouncycastle.jce.provider.BouncyCastleProvider;import java.security.*;import java.security.spec.ECGenParameterSpec;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;import java.util.Base64;/*** @author hulala* @Description 国密公私钥对工具类public class KeyUtils {/*** 生成国密公私钥对** @return* @throws Exception*/public static String[] generateSmKey() throws Exception {KeyPairGenerator keyPairGenerator = null;SecureRandom secureRandom = new SecureRandom();ECGenParameterSpec sm2Spec = new ECGenParameterSpec("sm2p256v1");keyPairGenerator = KeyPairGenerator.getInstance("EC", new BouncyCastleProvider());keyPairGenerator.initialize(sm2Spec);keyPairGenerator.initialize(sm2Spec, secureRandom);KeyPair keyPair = keyPairGenerator.generateKeyPair();PrivateKey privateKey = keyPair.getPrivate();PublicKey publicKey = keyPair.getPublic();//String[0] 公钥//String[1] 私钥String[] result = {new String(Base64.getEncoder().encode(publicKey.getEncoded())), new String(Base64.getEncoder().encode(privateKey.getEncoded())) };return result;}/*** 将Base64转码的公钥串,转化为公钥对象** @param publicKey* @return*/public static PublicKey createPublicKey(String publicKey) {PublicKey publickey = null;try {X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(publicKey));KeyFactory keyFactory = KeyFactory.getInstance("EC", new BouncyCastleProvider());publickey = keyFactory.generatePublic(publicKeySpec);} catch (Exception e) {e.printStackTrace();}return publickey;}/*** 将Base64转码的私钥串,转化为私钥对象** @param privateKey* @return*/public static PrivateKey createPrivateKey(String privateKey) {PrivateKey publickey = null;try {PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKey));KeyFactory keyFactory = KeyFactory.getInstance("EC", new BouncyCastleProvider());publickey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);} catch (Exception e) {e.printStackTrace();}return publickey;}}3.根据公钥和私钥工具类,生成的密钥对,对数据,进行加密和解密操作import org.bouncycastle.asn1.gm.GMObjectIdentifiers;import org.bouncycastle.crypto.InvalidCipherTextException;import org.bouncycastle.crypto.engines.SM2Engine;import org.bouncycastle.crypto.params.ECDomainParameters;import org.bouncycastle.crypto.params.ECPrivateKeyParameters;import org.bouncycastle.crypto.params.ECPublicKeyParameters;import org.bouncycastle.crypto.params.ParametersWithRandom;import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey;import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey;import org.bouncycastle.jce.provider.BouncyCastleProvider;import org.bouncycastle.jce.spec.ECParameterSpec;import java.security.*;/*** @author hulala* @Description SM2实现工具类*/public class Sm2Util {static {Security.addProvider(new BouncyCastleProvider());}/*** 根据publicKey对原始数据data,使用SM2加密** @param data* @param publicKey* @return*/public static byte[] encrypt(byte[] data, PublicKey publicKey) {ECPublicKeyParameters localECPublicKeyParameters = null;if (publicKey instanceof BCECPublicKey) {BCECPublicKey localECPublicKey = (BCECPublicKey) publicKey;ECParameterSpec localECParameterSpec = localECPublicKey.getParameters();ECDomainParameters localECDomainParameters = new ECDomainParameters(localECParameterSpec.getCurve(),localECParameterSpec.getG(), localECParameterSpec.getN());localECPublicKeyParameters = new ECPublicKeyParameters(localECPublicKey.getQ(), localECDomainParameters);}SM2Engine localSM2Engine = new SM2Engine();localSM2Engine.init(true, new ParametersWithRandom(localECPublicKeyParameters, new SecureRandom()));byte[] arrayOfByte2;try {arrayOfByte2 = localSM2Engine.processBlock(data, 0, data.length);return arrayOfByte2;} catch (InvalidCipherTextException e) {e.printStackTrace();return null;}}/*** 根据privateKey对加密数据encodedata,使用SM2解密** @param encodedata* @param privateKey* @return*/public static byte[] decrypt(byte[] encodedata, PrivateKey privateKey) {SM2Engine localSM2Engine = new SM2Engine();BCECPrivateKey sm2PriK = (BCECPrivateKey) privateKey;ECParameterSpec localECParameterSpec = sm2PriK.getParameters();ECDomainParameters localECDomainParameters = new ECDomainParameters(localECParameterSpec.getCurve(),localECParameterSpec.getG(), localECParameterSpec.getN());ECPrivateKeyParameters localECPrivateKeyParameters = new ECPrivateKeyParameters(sm2PriK.getD(),localECDomainParameters);localSM2Engine.init(false, localECPrivateKeyParameters);try {byte[] arrayOfByte3 = localSM2Engine.processBlock(encodedata, 0, encodedata.length);return arrayOfByte3;} catch (InvalidCipherTextException e) {e.printStackTrace();return null;}}/*** 私钥签名** @param data* @param privateKey* @return* @throws Exception*/public static byte[] signByPrivateKey(byte[] data, PrivateKey privateKey) throws Exception { Signature sig = Signature.getInstance(GMObjectIdentifiers.sm2sign_with_sm3.toString(), BouncyCastleProvider.PROVIDER_NAME);sig.initSign(privateKey);sig.update(data);byte[] ret = sig.sign();return ret;}/*** 公钥验签** @param data* @param publicKey* @param signature* @return* @throws Exception*/public static boolean verifyByPublicKey(byte[] data, PublicKey publicKey, byte[] signature) throws Exception {Signature sig = Signature.getInstance(GMObjectIdentifiers.sm2sign_with_sm3.toString(), BouncyCastleProvider.PROVIDER_NAME);sig.initVerify(publicKey);sig.update(data);boolean ret = sig.verify(signature);return ret;}}4.来测试一下,对数据进行加密解密import org.junit.Test;import java.util.Base64;/*** @author hulala* @Description Sm2Util 的测试类*/public class Sm2UtilTest {private String testStr = "wangjing";java.security.PublicKey publicKey = null;java.security.PrivateKey privateKey = null;@Testpublic void test() throws Exception {//生成公私钥对String[] keys = KeyUtils.generateSmKey();System.out.println("原始字符串:" + testStr);System.out.println("公钥:" + keys[0]);publicKey = KeyUtils.createPublicKey(keys[0]);System.out.println("私钥:" + keys[1]);privateKey = KeyUtils.createPrivateKey(keys[1]);System.out.println("");byte[] encrypt = Sm2Util.encrypt(testStr.getBytes(), publicKey);String encryptBase64Str = Base64.getEncoder().encodeToString(encrypt);System.out.println("加密数据:" + encryptBase64Str);byte[] decode = Base64.getDecoder().decode(encryptBase64Str);byte[] decrypt = Sm2Util.decrypt(decode, privateKey);System.out.println("解密数据:" + new String(decrypt));byte[] sign = Sm2Util.signByPrivateKey(testStr.getBytes(), privateKey);System.out.println("数据签名:" + Base64.getEncoder().encodeToString(sign));boolean b = Sm2Util.verifyByPublicKey(testStr.getBytes(), publicKey, sign);System.out.println("数据验签:" + b);}}5.这样就实现了利用国密,SM2进行加密解密了.。
国产密码改造方案单位办公系统国产密码改造方案1.国产密码算法背景随着国家信息化建设的不断推进,信息安全问题越来越受到重视。
为了加强信息安全保障,国家提出了推广使用国产密码算法的目标。
在此背景下,本单位决定对办公系统进行国产密码改造。
2.网络及业务现状分析在进行密码改造前,我们对办公系统的网络及业务进行了分析。
根据分析结果,我们发现系统存在一些安全隐患,需要加强保障。
同时,系统的业务量也在不断增加,需要更高效的密码算法来支持。
3.单位密码应用现状分析3.1 单位密码应用现状我们对本单位的密码应用现状进行了详细调查,发现目前存在一些问题。
例如,密码强度不够,易被破解;密码管理不规范,存在泄露风险等。
3.2 面临的问题在密码改造过程中,我们还面临着一些问题。
例如,如何保证密码算法的安全性和可靠性;如何进行系统的平滑升级等。
4.建设原则为了确保密码改造的顺利进行,我们制定了一系列建设原则。
例如,保证密码算法的安全性和可靠性;注重用户体验,确保密码使用的便利性等。
5.建设目标我们的建设目标是,通过密码改造,提升系统的信息安全保障能力,提高密码算法的效率和安全性,为单位的业务发展提供更好的支持。
6.设计依据在制定国产密码改造方案时,我们遵循了一系列设计依据。
例如,XXX发布的密码算法标准,以及国内外密码算法的研究成果等。
7.国密改造方案7.1 技术路线选择在国密改造方案中,我们选择了国产SM2、SM3、SM4算法作为密码算法。
同时,我们采用了一系列安全技术手段,如密钥管理、加密传输等,来保障密码算法的安全性和可靠性。
7.2 总体架构在本章节中,我们将会介绍整个国产密码改造项目的总体架构。
该架构包括了可信密码认证机制、数据存储保护机制、数据传输保护机制以及运行维护保护机制等多个方面。
7.3 改造方案为了保障信息安全,我们需要对原有的密码系统进行改造。
本节将会介绍我们的改造方案,包括可信密码认证机制、数据存储保护机制、数据传输保护机制以及运行维护保护机制等多个方面。
第38卷第6期 计算机应用与软件Vol 38No.62021年6月 ComputerApplicationsandSoftwareJun.2021基于国产公钥密码算法的门限签名及解密方案廖会敏 王 栋 玄佳兴 杨 珂 李丽丽(国网电子商务有限公司(国网雄安金融科技集团有限公司) 北京100053)(国家电网有限公司电力金融与电子商务实验室 北京100053)收稿日期:2019-08-30。
国家电网公司总部科技项目(5700 201972227A 0 0 00);国家重点研发计划项目(2018YFB0805005)。
廖会敏,高工,主研领域:密码学,信息安全,电力信息化。
王栋,高工。
玄佳兴,硕士生。
杨珂,博士。
李丽丽,高工。
摘 要 公钥密码体系中用户的私钥保护问题至关重要,在智能终端安全存储和使用私钥成为当前面临的问题。
在门限密码学的基础上,以密码机为辅助设备,提出基于国产公钥SM2/SM9算法的门限签名和门限解密方案。
将私钥分割成两份,一份存储在客户端,一份存储在服务端密码机。
当需要使用私钥进行签名或解密运算时,由客户端和服务端密码机分别使用自己的私钥分量进行密码运算,并通过一定的交互过程后得到最终的签名或解密结果。
由于密码机的特性,攻击者获得完整私钥的可能性趋近于零,对于密码机无法存储海量私钥分量的问题亦给出解决方案。
和以往的门限方案相比,该方案私钥的安全系数更高,更贴近实际的应用场景。
关键词 SM2算法 SM9算法 门限签名 门限解密 智能终端中图分类号 TP393 文献标志码 A DOI:10.3969/j.issn.1000 386x.2021.06.050THRESHOLDSIGNATUREANDDECRYPTIONSCHEMEBASEDONCHINESEPUBLICKEYCRYPTOGRAPHYLiaoHuimin WangDong XuanJiaxing YangKe LiLili(StateGridElectronicCommerceCo.,Ltd./StateGridXiong’anFinancialTechnologyGroupCo.,Ltd.,Beijing100053,China)(PowerFinanceandE commerceLaboratory,StateGridCorporationofChina,Beijing100053,China)Abstract Inthepublickeycryptosystem,theuser sprivatekeyprotectionproblemisveryimportant.Howtosecurelystoreanduseprivatekeysinintelligentterminalshasbecomeacurrentproblem.Onthebasisofthresholdcryptography,aciphermachineisusedasanauxiliarydevice,andathresholdsignatureandthresholddecryptionschemebasedontheChinesepublickeySM2/SM9algorithmisproposed.Theprivatekeywasdividedintotwoparts:onewasstoredintheclient,andtheotherwasstoredintheserver sciphermachine.Whentheprivatekeywasusedforsignatureordecryptionoperation,theclientandtheserver sciphermachinerespectivelyusedtheirownprivatekeycomponentsforcryptographicoperations,andgotthefinalsignatureordecryptionresultafteracertaininteractionprocess.Duetothecharacteristicsoftheciphermachine,thepossibilitythattheattackerobtainsthecompleteprivatekeyapproacheszero,andthesolutionisalsosolvedfortheproblemthattheciphermachinecannotstorethemassiveprivatekeycomponent.Comparedwiththepreviousthresholdscheme,thesecuritykeyoftheschemehasahighersecurityfactorandisclosertotheactualapplicationscenario.Keywords SM2algorithm SM9algorithm Thresholdsignature Thresholddecryption Intelligentterminal0 引 言公钥密码算法也称为非对称密码算法,其密钥对由公钥和私钥组成。
数据存储及码流数据传输中的国密算法安全应用随着云计算和大数据技术的发展,数据的存储和传输已经成为了日常工作中不可避免的任务。
然而,如何保证数据的安全性以及隐私性就成为了一个非常重要的话题。
在数据存储和传输过程中,使用合适的加密算法可以起到保护数据安全的作用,其中国密算法被广泛应用。
国密算法是中国专门为保护国家安全信息而制定的加密算法标准,它包括了对称加密算法、非对称加密算法、哈希算法等,在数据存储和传输过程中可以起到很好的保护作用。
在数据存储中,国密算法可以使用在数据库加密、文件加密、磁盘加密等方面。
通过对数据进行加密,可以避免数据被非法获取、篡改,同时也能保护数据的隐私性。
在数据库加密方面,国密算法可以实现整个数据库的加密,也可以对特定的字段进行加密。
这样可以保证在数据备份和恢复过程中,即使数据被盗取,也能够保证数据的隐私性。
在文件加密方面,可以通过对文件进行加密来保证文件的安全,只有授权的用户才能够访问文件。
在磁盘加密方面,可以对磁盘进行加密,保护磁盘中的数据,以免被盗取或篡改。
在数据传输方面,国密算法可以使用在网络传输、流媒体传输、实时视频传输等方面。
网络传输是数据存储和传输中最常用的方式之一,国密算法可以通过在数据传输时对数据进行加密,从而保证数据传输的安全和隐私性。
在流媒体传输和实时视频传输方面,数据的实时性要求非常高,国密算法可以通过优化算法效率和提高加密速度来保证数据的实时传输和安全。
同时可以通过在传输协议中加入安全认证机制和数据完整性保护机制等方法,保证数据传输过程中不被篡改或被非法访问。
总的来说,国密算法在数据存储和传输方面具有非常重要的应用,可以保证数据的安全性和隐私性,避免数据泄露和被非法访问。
但是需要注意的是,虽然国密算法已经得到了广泛的应用,但是仍然存在着安全漏洞和攻击的可能性,因此使用国密算法时需要结合实际情况进行安全评估和加强安全措施,以保证数据的真正安全。
国产密码应用在项目建设系统中的作用研究【摘要】国密即国家密码局认定的国产密码算法。
在党政、军队、政府及企业相关领域,使用密码算法,实现数据信息安全的自主可控能力。
密码产品的普及是顺应信息技术变革的必然结果,保障系统安全成为信息产品和信息服务的基本需求,密码技术作为不可或缺的重要手段,密码应用将不断深入和拓展至项目建设中,实现其价值和意义。
【关键词】国产密码、商用密码应用、密码法、合规性、正确性及有效性。
1 引言随着云计算、移动互联网、大数据、物联网及人工智能等信息技术的发展,以密码算法、数据加解密、认证鉴别、密码管理、密码防伪等为核心功能的密码产品,实现了从“不好用、很少用”到“方便用、普遍用”的技术突破,迎来爆发式增长的新高潮。
2 现状及问题分析2.1 现状分析随着《中华人民共和国网络安全法》、《中华人民共和国密码法》、《信息安全技术网络安全等级保护基本要求》等法律法规的出台。
网络安全、密码应用受到社会各界的广泛关注。
由于各行业信息化发展程度不同,一些重要领域的网络和信息系统仍存在密码应用不规范、保障体系不健全等突出问题,密码应用安全建设迫在眉睫。
采用国产密码技术、产品及服务,或直接对现有信息系统进行密码应用改造,是提高信息系统安全的必经之路。
2.2 问题分析主要从物理和环境安全、网络和通信安全、设备和计算安全、应用与数据安全等方面分析。
(1)物理和环境方面未使用密码技术会导致物理访问身份无法鉴别、门禁进出记录的数据存在不完整性风险及无法保证视频监控影像记录的完整性。
(2)网络和通信方面可能存在实体身份的真实性无法鉴别、设备身份的真实性无法鉴别、访问控制信息的完整性无法核实、通信数据的完整性无法确认、通信数据的机密性无法保证。
(3)设备和计算安全方面设备和计算的连接可能会使机密性、完整性、真实性无法保证。
(4)应用与数据安全方面未使用密码技术会导致应用与数据安全中关于用户在身份鉴别中无法确定登陆用户的真实性、系统应用访问控制无法保证访问控制信息的完整性、重要数据在传输过程中无法保证机密性和完整性及重要数据在存储过程中无法保证机密性和完整性。
本刊特约谢宗晓 博士“十二五”国家重点图书出版规划项目《信息安全管理体系丛书》执行主编。
自2003 年起,从事信息安全风险评估与信息安全管理体系的咨询与培训工作。
目前,已发表论文160 多篇,出版专著20 多本。
国产商用密码算法的国际标准化及其对应关系谢宗晓(中国金融认证中心)董坤祥(山东财经大学)甄杰(重庆工商大学)摘要:对国产商用密码算法ZUC、SM4、SM2、SM9和SM3对应的密码行业标准、国家标准、国际标准以及对应的国际密码算法进行了梳理。
关键词:国产商用密码算法 国际标准 密码算法 SM系列算法International Standardization of Domestic Commercial Cryptographic Algorithmsand Their Corresponding RelationsXie Zongxiao (China Financial Certification Authority)Dong Kunxiang (Shandong University of Finance and Economics)Zhen Jie (Chongqing Technology and Business University)Abstract: In this paper, the domestic commercial cryptographic algorithms ZUC, SM4, SM2, SM9 and SM3 corresponding cryptographic industry standards, national standards, international standards and the corresponding international cryptographic algorithms are combed.Key words: domestic commercial cryptographic algorithms, international standard, cryptographic algorithm, SM series algorithm1 国产商用密码算法《中华人民共和国密码法》第六条规定,商用密码是指用于保护不属于国家秘密信息的密码算法,目前国家发布的国产商用密码算法主要为SM系列[1],按照类别可以分为:1)对称密码算法,主要包括ZUC 和SM4;2)非对称密码算法,主要包括SM2和SM9;3)密码杂凑算法,主要包括SM3。
爬⾍逆向基础,认识SM1-SM9、ZUC国密算法关注微信公众号:K哥爬⾍,QQ交流群:808574309,持续分享爬⾍进阶、JS/安卓逆向等技术⼲货!【01x00】简介国密即国家密码局认定的国产加密算法,爬⾍⼯程师在做 JS 逆向的时候,会遇到各种各样的加密算法,其中 RSA、AES、SHA 等算法是最常见的,这些算法都是国外的,在 K 哥以前的⽂章⾥也有介绍:事实上从 2010 年开始,我国国家密码管理局就已经开始陆续发布了⼀系列国产加密算法,这其中就包括 SM1、SM2、SM3 、SM4、SM7、SM9、ZUC(祖冲之加密算法)等,SM 代表商密,即商业密码,是指⽤于商业的、不涉及国家秘密的密码技术。
SM1 和 SM7 的算法不公开,其余算法都已成为 ISO/IEC 国际标准。
在这些国产加密算法中,SM2、SM3、SM4 三种加密算法是⽐较常见的,在爬取部分 gov ⽹站时,也可能会遇到这些算法,所以作为爬⾍⼯程师是有必要了解⼀下这些算法的,如下图所⽰某 gov ⽹站就使⽤了 SM2 和 SM4 加密算法:【02x00】算法概述算法名称算法类别应⽤领域特点SM1对称(分组)加密算法芯⽚分组长度、密钥长度均为 128 ⽐特SM2⾮对称(基于椭圆曲线 ECC)加密算法数据加密ECC 椭圆曲线密码机制 256 位,相⽐ RSA 处理速度快,消耗更少SM3散列(hash)函数算法完整性校验安全性及效率与 SHA-256 相当,压缩函数更复杂SM4对称(分组)加密算法数据加密和局域⽹产品分组长度、密钥长度均为 128 ⽐特,计算轮数多SM7对称(分组)加密算法⾮接触式 IC 卡分组长度、密钥长度均为 128 ⽐特SM9标识加密算法(IBE)端对端离线安全通讯加密强度等同于 3072 位密钥的 RSA 加密算法ZUC对称(序列)加密算法移动通信 4G ⽹络流密码【03x00】算法详解【03x01】SM1 分组加密算法SM1 为分组加密算法,对称加密,分组长度和密钥长度都为 128 位,故对消息进⾏加解密时,若消息长度过长,需要进⾏分组,要消息长度不⾜,则要进⾏填充。
ssl 国密协议原理
SSL国密协议采用的是我国自主研发的SM2公钥算法体系,支持SM2、SM3、SM4等国产密码算法及国密SSL安全协议。
其工作原理是采用自主可控密码技术来保护数据的机密性、完整性,实现HTTPS 网站的全加密传输,防止数据在传输过程中被窃取或篡改,确保通信主体身份的真实性。
在基础设施上,国密SSL证书的OCSP、CRL列表、时间戳服务器都部署在国内,校验证书等速度较快。
国密SSL证书的SM2采用256位密码长度,加密强度等同于3072位RSA证书。
在支持的浏览器上,RSA兼容所有主流浏览器,而国密SSL证书仅兼容主要的国密浏览器,而陕西CA的SSL证书所采用的是SM2+RSA双证书模式。
双证书通过双国密安全认证网关实现SM2及RSA双算法双SSL
证书应用,基于国产密码算法的浏览器作为客户端,实现客户端层面国产算法自适应应用。
商用车基于国产商用密码的车云-PKI安全体系应用实践摘要:随着智联化网联化的发展,商用车车云通信面临着严重的信息安全风险。
为满足国家安全要求及推进国产商用密码的应用,本文构建了商用车车云-PKI安全认证体系,采用了国产商用密码,比如国密SM2、SM3和SM4算法。
本文详细描述了在证书生命周期内的应用实践。
关键词:商用车;车云-PKI;国产商用密码中图分类号:TP309 文献标志码:A引言随着商用车智能化、网联化、电动化发展,商用车车云通信带来的信息安全威胁,不仅会导致人身伤害及经济损失,还可能引发社会问题。
比如,黑客入侵车辆智能控制系统,对车辆的停车状态及行驶状态进行远程控制,带来直接的人身伤害及财产损失,大规模黑客入侵事件,还会造成威胁公共安全及国家安全的社会问题[1,3-5]。
在车云通信方面,云服务器、通信协议、传输、车端等环节面临着安全风险。
常见的风险有:身份假冒、窃听攻击、数据篡改等。
目前,国密在金融、电信等重点行业已进行了国密改造,但在车联网,特别是商用车行业,国产商用密码应用基础薄弱,主要存在不够广泛、规范、安全、契合等问题[6]。
本文针对车云通信的安全威胁及推进国产商用密码的应用,构建基于国产密码的车云-PKI安全认证体系,以满足商用车的车云通信安全要求。
1基于国产商用密码的车云-PKI安全体系1.1 PKI 体系安全原理PKI是利用公钥理论和技术建立的提供网络信息安全服务的基础设施,为用户提供所需的密钥和证书管理,用户可以利用PKI平台提供的安全服务进行安全通信[2]。
为保证车联网中各节点之间的通信安全,常采用 PKI 机制来保证通信安全,满足车联网通信的真实性、机密性、完整性、可用性、不可否认要求。
PKI主要利用加密、数字签名、数字证书等来保护应用、通信或事务处理的安全性:1.2 国产商用密码为了保障我国商用密码安全,国家商用密码管理办公室制定了一系列国产密码标准,包括SF3、SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法等。
国密算法和国际密码算法的却别算法一、概述密码学是信息安全的重要组成部分,它涉及到如何保护信息的机密性、完整性和可用性。
密码算法是密码学的基础,分为国际密码算法(如RSA、ECC)和国产密码算法(如SM2、SM3)等。
本文将介绍国密算法和国际密码算法的区别与联系。
二、国密算法国密算法是一种基于我国自主研发的密码技术实现的密码算法,主要包括SM1到SM5系列密码算法。
这些算法具有较高的安全性,适合于在各种场景下使用。
国密算法的特点包括:1.安全性高:基于我国自主研发的密码技术,具有较高的安全性。
2.适用性强:适用于各种场景,包括网络通信、数据加密、身份认证等。
3.易于实现:算法实现简单,易于在各种设备上部署。
三、国际密码算法国际密码算法是指国际通用的密码技术实现的密码算法,主要包括RSA、ECC 等。
这些算法在信息安全领域得到了广泛应用,具有较高的安全性和效率。
国际密码算法的特点包括:1.安全性高:经过广泛的安全性测试和评估,具有较高的安全性。
2.效率高:算法实现简单,运算速度快,适用于大规模数据加密和签名等场景。
3.标准化:国际上已经形成了相应的标准,便于在各种场景下使用。
四、区别与联系国密算法和国际密码算法在安全性、适用性和标准化等方面存在一定的区别,但也存在一定的联系。
具体来说:1.安全性:国密算法和国际密码算法都具有较高的安全性,但具体安全性评估和测试可能存在差异。
2.适用性:国际密码算法在某些场景下具有更高的效率和适用性,而国密算法则更适合于国内场景。
3.标准化:国际密码算法已经形成了相应的标准,而国密算法也在逐步实现标准化,以适应国内信息安全的需求。
五、结论综上所述,国密算法和国际密码算法各有特点,适用于不同的场景。
在实际应用中,应根据具体需求和场景选择合适的密码算法。
同时,加强密码技术的研究和应用,提高我国信息安全保障能力,是当前信息安全领域的重要任务。
国产密码的实施方案随着信息技术的飞速发展,网络安全问题日益凸显,密码作为最基本的安全保障手段,其重要性不言而喻。
然而,国外密码产品的垄断导致了我国在密码领域的安全风险。
因此,国产密码的实施方案成为当前亟待解决的重要问题。
首先,国产密码的实施需要建立完善的技术标准和规范。
在密码算法设计、密码产品生产、密码应用环节,都需要明确的技术标准和规范,以确保密码产品的安全性和可靠性。
同时,建立健全的密码产品认证制度,对符合标准的国产密码产品给予认证,提高其市场竞争力。
其次,加强国产密码技术的研发和创新是实施方案的关键。
通过加大对密码技术研发的投入,提高国产密码产品的技术水平和安全性,缩小与国外密码产品的差距。
同时,鼓励企业加强技术创新,推动密码技术的自主发展,提高国产密码产品在市场中的份额。
此外,加强国产密码产品的推广和应用也是实施方案的重要环节。
政府可以通过采购国产密码产品来带动市场需求,同时加大对国产密码产品的宣传和推广力度,提高用户对国产密码产品的认知度和信任度。
推动国产密码产品在政府、军队、金融等重要领域的应用,逐步取代国外密码产品的地位。
最后,建立健全的国产密码产业生态系统。
政府可以出台相关政策,鼓励和支持国产密码企业的发展,提供税收优惠、技术支持等政策措施,吸引更多的资金和人才投入到国产密码产业中。
同时,加强国产密码产业的合作与交流,形成产学研深度融合的发展模式,提升国产密码产业的整体竞争力。
综上所述,国产密码的实施方案需要从技术标准、研发创新、产品推广和产业生态等多个方面进行全面推进。
只有通过持续的努力和创新,才能够逐步实现国产密码产品在市场中的替代和领先地位,确保网络安全和信息安全的可靠性和稳定性。
国产商用密码算法SM3及其相关标准介绍作者:谢宗晓甄杰董坤祥来源:《中国质量与标准导报》2021年第03期SM3密码杂凑算法发布于2010年12月17日1)。
密码杂凑算法也被称作“杂凑算法”“散列算法”或“哈希算法”。
在GM/Z 0001—2013《密码术语》中,上述几个术语对应的英文都是hash algorithm。
1 密码杂凑算法密码杂凑算法的主要功能是将一个任意长的比特串映射到一个固定长的比特串。
假设任意长度的消息M,经过函数H(M)运算后,得到一个固定长度为m的散列值h,如公式(1)所示。
h=H(M)(1)如果上述运算满足下面3个条件:(1)给定任意长度的消息M,容易固定长度的h;(2)给定h,计算M非常困难;(3)给定任意长度的消息M,要找到另一个任意长度的消息M′,能够满足H(M)= H (M′),非常困难。
观察(1)和(2),实际就是单向函数的要求,对于(3)而言,这个特性指的是抗碰撞性(collision resistance),即防止不同的输入产生相同的输出。
在实践中使用的密码杂凑函数必须具备强抗碰撞性,例如,MD4、MD5和SHA-1都是因为碰撞攻击算法而被攻破。
通俗而言,就是这些算法H(M),已经能够产生具备相同散列值h的两条不同消息M和M′。
由于密码杂凑算法这个特性,散列值h,就像是消息的“指纹”。
显然,密码杂凑算法可以用于验证消息的完整性(integrity),也可以更广泛地应用于数字签名和验证、消息鉴别码(message authentication code,MAC)的生成和验证,以及随机数的生成等。
2 SM3密码杂凑算法SM3是一种密码杂凑算法。
2012年,SM3被采纳为GM/T 0004—2012行业标准,2016年转化为GB/T 32905—2016国家标准。
具体信息如表1所示。
SM3的将输入的消息经过填充和迭代压缩等步骤,生成256比特杂凑值(散列值h)。
GB/T 32905—2016中举了一个通俗易懂的例子,消息01100001 01100010 01100011,长度l为24,首先①,在末尾加“1”,然后②,添加k个“0”凑成512的倍数,最后③,添加一个64位比特串,该比特串是输入消息长度l的二进制表示。
****单位办公系统国产密码改造方案方案设计时间2020.4目录1国产密码算法背景22网络及业务现状分析43****单位密码应用现状分析53.1****单位密码应用现状53.2面临的问题54建立原那么75建立目标96设计依据107国密改造方案117.1技术路线选择117.2总体架构147.3改造方案167.3.1可信密码认证机制167.3.2数据存储保护机制227.3.3数据传输保护机制227.3.4运行维护保护机制248整体投资估算288.1国产密码整体改造投资预算288.2****单位2020年分步实施预算291国产密码算法背景2011年6月,工程院多名院士联合上书,建议在金融、重要政府单位领域率先采用国产密码算法,国务院相关领导作出重要批示。
2011年11月,工信部和公安部通告了RSA1024算法被破解的风险,同时人行起草了使用国产密码算法的可行性报告。
国家密码管理局在?关于做好公钥密码算法升级工作的函?中要求2011年7月1日以后建立并使用公钥密码的信息系统,应当使用SM2算法;已经建立完成的系统,应尽快进展系统升级,使用SM2算法。
近几年,国家密码管理局发布实施了?证书认证系统密码及其相关技术规?、?数字证书认证系统密码协议规?、?数字证书认证系统检测规?、?证书认证密钥管理系统检测规?等标准规,2010年,发布实施了?密码设备应用接口规?、?通用密码效劳接口规?、?证书应用综合效劳接口规?及?智能IC卡及智能密码钥匙密码应用接口规?等包含SM1、SM2、SM3、SM4等算法使用的标准规,而且也有局部厂商依据这些标准规研制开发了一些产品,为实施国产密码算法升级提供了技术根底。
本工程是落实?中共中央办公厅印(关于加强重要领域密码应用的指导意见)的通知?、?金融和重要领域密码应用与创新开展工作规划〔2018-2022年〕?、?2019年全省金融和重要领域密码应用与创新开展工作任务分解?等一系列国家和省有关国产密码建立文件精神的重要举措。
国产密码算法及应用 商用密码,是指能够实现商用密码算法的加密、解密和认证等功能的技术。(包括密码算法编程技术和密码算法芯片、加密卡等的实现技术)。商用密码技术是商用密码的核心,国家将商用密码技术列入国家秘密,任何单位和个人都有责任和义务保护商用密码技术的秘密。 商用密码的应用领域十分广泛,主要用于对不涉及国家秘密内容但又具有敏感性的内部信息、行政事务信息、经济信息等进行加密保护。比如各种安全认证、网上银行、数字签名等。 为了保障商用密码安全,国家商用密码管理办公室制定了一系列密码标准,包括SSF33、SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法等等。其中SSF33、SM1、SM4、SM7、祖冲之密码 是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。 目前已经公布算法文本的包括SM2椭圆曲线公钥密码算法、SM3密码杂凑算法、SM4分组密码算法等。
一、 国密算法简介 1. SM1对称密码 国密SM1算法是由国家密码管理局编制的一种商用密码分组标准对称算法,分组长度为128位,密钥长度都为128比特,算法安全 保密强度及相关软硬件实现性能与AES相当,算法不公开,仅以IP核的形式存在于芯片中。 采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。
2. SM2椭圆曲线公钥密码算法 SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。国密SM2算法标准包括4个部分,第1部分为总则,主要介绍了ECC基本的算法描述,包括素数域和二元扩域两种算法描述,第2部分为数字签名算法,这个算法不同于ECDSA算法,其计算量大,也比ECDSA复杂些,也许这样会更安全吧,第3部分为密钥交换协议,与ECDH功能相同,但复杂性高,计算量加大,第4部分为公钥加密算法,使用ECC公钥进行加密和ECC私钥进行加密算法,其实现上是在ECDH上分散出流密钥,之后与明文或者是密文进行异或运算,并没有采用第3部分的密钥交换协议产生的密钥。对于SM2算法的总体感觉,应该是国家发明,其计算上比国际上公布的ECC算法复杂,相对来说算法速度可能慢,但可能是更安全一点。 设需要发送的消息为比特串M,len为M的比特长度。为了对明文M进行加密,作为加密者的用户应实现以下运算步骤: 步骤1:用随机数发生器产生随机数k∈[1,n -1]; 步骤2:计算椭圆曲线点C1=[k]G=(X1 ,Y1 ),将C1的数据类型转换为比特串; 步骤3:计算椭圆曲线点S=[h]P ,若S是无穷远点,则报错; 步骤4:计算椭圆曲线点[k]P =(X2,Y2),将坐标X2,Y2的数据类型转换为比特串; 步骤5:计算t=KDF(x2 ll y2 ,len),若t为全0比特串,则返回步骤1; 步骤6:计算C2 = M ⊕ t; 步骤7:计算C3=Hash(x2 ll M ll y2); 步骤8:输出密文C=C1 ll C2 ll C3。 2010年底,国家密码管理局公布了我国自主研制的“椭圆曲线公钥密码算法”(SM2算法)。为保障重要经济系统密码应用安全,国家密码管理局于2011年发布了《关于做好公钥密码算法升级工作的通知》,要求“自2011年3月1日期,在建和拟建公钥密码基础设施电子认证系统和密钥管理系统应使用SM2算法。自2011年7月1日起,投入运行并使用公钥密码的信息系统,应使用SM2算法。”近期,人民银行组织召开多次专题会议讨论研究金融领域国产加密算法升级改造的相关工作。
3. SM3杂凑算法 又叫文摘算法,也有叫杂凑算法的。功能与MD5,SHA-1相同。产生256位的编码。该算法位不可逆的算法。具体算法也是保密。SM3密码杂凑算法给出了杂凑函数算法的计算方法和计算步骤,并给出了 运算示例。此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。在SM2、SM9标准中使用。此算法对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度为256比特的杂凑值,其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数所构成。 SM3算法包括预处理、消息扩展和计算Hash值三部分。预处理部分由消息填充和消息分组两部分组成。首先将接收到的消息末尾填充一个“1” , 再添加k个“0”,使得填充后的数据成为满足length = 448mod512bit的数据长度,再在末尾附上64bit消息长度的二进制表示数, 然后将消息分成512bit的子块,最后将每个512bit的消息子块扩展成132个字用于Hash值的计算。SM3算法计算流程图如图所示。 SM3算法的Hash运算主要是在压缩函数部分,压缩函数共包含64轮,每轮包括12步运算,64轮循环计算结束后,再将计算结果与输入到本轮计算的初始数据进行异或运算,即上一次Hash运算的Hash值输出与输入到本轮计算的初始数据异或得到本次Hash值输出,Hn即为最终的Hash值,H0为设计者提供的初始值IV。 图 SM3算法流程图 4. SM4对称算法 此算法是一个分组算法,用于无线局域网产品。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。 定义反序变换R为: R(A0,A1,A2,A3)=(A3,A2,A1,A0),Ai∈Z322,i = 0,1,2,3。设明文输入为(X0,X1,X2,X3)∈(Z322)4,密文输出为(Y0,Y1,Y2,Y3)∈(Z322)4 ,轮密钥为rk i ∈Z322。则本算法的加密变换为: Xi+4 = F(Xi,Xi+1,Xi+2, Xi+3,rki)= Xi⊕T(Xi+1⊕Xi+2⊕ Xi+3⊕rki),i= 0,1,2,3…,31. (Y0,Y1,Y2,Y3)= R(X32,X33,X34,X35)=(X35,X34,X33,
X32)。 本算法的解密变换与加密变换结构相同,不同的仅是轮密钥的使用顺序。 加密时轮密钥的使用顺序为:(rk0, rk1, …, rk31)。 解密时轮密钥的使用顺序为:(rk31, rk30, …, rk0)。 SM4算法的优点是软件和硬件实现容易,运算速度快,但该算法的缺点是消息安全取决于对密钥的保护,泄漏密钥就意味着任何人都能对消息进行密码和解密。由于其加密过程和解密过程互逆,这两个过程均使用相同的保密密钥,使得对称密钥加密体制的适用范围受到了很大限制。
5. SM7对称密码 SM7算法是一种分组密码算法,分组长度为128比特,密钥长度为128比特。SM7的算法文本目前没有公开发布。SM7适用于非接IC卡应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通、公交一卡通)。
6. SM9非对称算法 SM9是基于对的标识密码算法,与SM2类似,包含四个部分:总则,数字签名算法,密钥交换协议以及密钥封装机制和公钥加密算法。在这些算法中使用了椭圆曲线上的对这一个工具,不同于传统意义上的SM2算法,可以实现基于身份的密码体制,也就是公钥与用 户的身份信息即标识相关,从而比传统意义上的公钥密码体制有许多优点,省去了证书管理等。 双线性对的双线性的性质是基于对的标识密码SM2中的总则部分同样适用于SM9,由于SM9总则中添加了适用于对的相关理论和实现基础。 SM9给出了数字签名算法(包括数字签名生成算法,数字签名验证算法),密钥交换协议,以及密钥封装机制和公钥加密算法(包括密钥封装算法,加密盒解密算法)。数字签名算法适用于接收者通过签名者的标识验证数据的完整性和数据发送者的身份,也适用于第三方确定签名及所签数据的真实性。密钥交换协议可以使用通信双方通过双方的标识和自身的私钥经过两次或者可选三次信息传递过程,计算获取一个由双方共同决定的共享秘密密钥。密钥封装机制和公钥加密算法中,利用密钥封装机制可以封装密钥给特定的实体。公钥加密和解密算法即基于标识的非对称秘密算法,该算法使消息发送者可以利用接收者的标识对消息进行加密,唯有接收者可以用相应的私钥对该密文进行解密,从而获取消息。基于对的算法中同样使用了国家密管理局批准的SM3密码杂凑算法和随机数发生器,密钥封装机制和公钥加密算法中使用了国家密码管理局批准的对称密码算法和消息认证码函数。
7. 祖冲之对称算法 祖冲之密码算法由中国科学院等单位研制,运用于下一代移动通 信4G网络LTE中的国际标准密码算法。祖冲之密码算法(ZUC)的名字源于我国古代数学家祖冲之,祖冲之算法集是由我国学者自主设计的加密和完整性算法,是一种流密码。它是两个新的LTE算法的核心,这两个LTE算法分别是加密算法128-EEA3和完整性算法128-EIA3。ZUC算法由3个基本部分组成,依次为:1、比特重组;2、非线性函数F;3、线性反馈移位寄存器(LFSR)。
二、 国密算法行业应用 2014年,中国银联发布了《中国银联IC卡技术规范》和《中国银联银行卡联网联合技术规范》,在兼容最新国际通用技术标准的基础上支持国产密码,丰富了安全算法体系,促进了信息安全,自主可控水平实现提高。
1. 长沙银行 长沙银行是首批开展国密算法金融IC卡试点银行之一,此次发行金融IC卡中采用了我国安全可控的国密算法芯片。应用在长沙银行金融IC卡上的大唐CE3D系列双界面金融安全芯片采用了32位CPU内核,拥有高达80KB的EEPROM数据存储空间,符合PBOC3.0中SM2/3/4算法升级要求,支持JAVA操作技术,具有高安全、高性能、低功耗的特点,实现国密算法的金融IC卡成功跨行交易。