国密算法简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
版本人员时间升级内容
❝课程目的
◦了解国密算法的算法原理
◦了解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比特1011
2048比特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.SecretKey
interface com.guomi.SM1Key
interface com.guomi.SM4Key
interface com.guomi.SM7Key
interface com.guomi.SSF33Key
◦interface javacard.security.PrivateKey interface com.guomi.SM2PrivateKey ◦interface javacard.security.PublicKey
interface 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 倍点。
其中,P 为公钥,坐标表示为(x,y),d 为私钥,G 为基点,坐标(gx ,gy ),‘*’为离散椭圆曲线坐标系中的乘法运算。
长度
举例SM2公钥64字节,包括x 分量和y 分量
6C7D9D212ED9A5B43659402F07696F7026AE2ADB874D9BDC2D4
DC47D883B6AEE8FC2FA7668EFD664E0876B21B1C6202551978331C59259489E5B13F941E1EA95SM2私钥32字节38DAF6D271322AF0AFEE399DEEF28D18B51CD8388BF78F4E78B943E7436181A4