SM2椭圆曲线公钥密码算法
国家必须要有属于自己的一套加密机制才行。。。好复杂。分享下看哪位看得懂其中的原理
国家密码管理局于2010年12月17日发布了SM2椭圆曲线公钥密码算法,并要求为对现有基于RSA算法的电子认证系统、密钥管理系统、应用系统进行升级改造。关于算法标准,请参见《国家密码管理局公告(第 21 号)》,网址为 www.oscca.gov.cn/
SM2算法和RSA算法有什么关系?
SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。
为什么要采用SM2算法替换RSA算法?
随着密码技术和计算技术的发展,目前常用的1024位RSA算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用SM2椭圆曲线算法替换RSA算法。SM2算法在安全性、性能上都具有优势,参见表1算法攻破时间,表2算法性能。
| RSA密钥强度 |
椭圆曲线密钥强度 |
攻破时间(年) |
|
512 |
106 |
104,已被攻破 |
|
768 |
132 |
108,已被攻破 |
|
1024 |
160 |
1011 |
|
2048 |
210 |
1020 |
表1 算法攻破时间
| 算法 |
签名速度(次/秒) |
验签速度(次/秒) |
|
1024位RSA |
2792 |
51224 |
|
2048位RSA |
455 |
15122 |
|
256位SM2 |
4095 |
871 |
表2 算法性能
SM2和椭圆曲线算法是什么关系?
一提起曲线,大家就会想到方程,椭圆曲线算法是通过方程确定的,SM2算法采用的椭圆曲线方程为:
y2 = x3 + ax + b
在SM2算法标准中,通过指定a、b系数,确定了唯一的标准曲线。同时,为了将曲线映射为加密算法,SM2标准中还确定了其它参数,供算法程序使用。
椭圆曲线算法是什么原理?
本文不探讨椭圆曲线的数学理论,仅通过图示展示算法原理。请参见下图:

图1 椭圆曲线算法原理
上图为方程:y2 = x3–x的曲线。
1、P点为基点;
2、通过P点做切线,交与点 2P点,在2P’点做竖线,交与2P点,2P点即为P点的2倍点;
3、进一步,P点和2P点之间做直线,交与3P’点,在3P’点做竖线,交与3P点,3P点即为P点的3倍点;
4、同理,可以计算出P点的4、5、6、… 倍点;
5、如果给定图上Q点是P的一个倍点,请问Q是P的几倍点呢?
6、直观上理解,正向计算一个倍点是容易的,反向计算一个点是P的几倍点则困难的多。
在椭圆曲线算法中,将倍数d做为私钥,将Q做为公钥。当然,椭圆曲线算法还有更严格的计算过程,相对图示要复杂的多。
SM2算法可以进行哪些密码应用?
SM2算法做为公钥算法,可以完成签名、密钥交换以及加密应用。SM2算法标准确定了标准过程:
1、签名、验签计算过程;
2、加密、解密计算过程;
3、密钥协商计算过程。
需要说明,其他国家的标准和SM2确定的计算过程存在差异,也就是说相互之间是不兼容的。
SM2算法速度快吗?
简单讲,SM2签名速度快,验签速度慢,这点和RSA算法的特性正好相反。参见表2。
另外,加解密速度和验签速度相当。
SM2签名算法支持多大的数据量,签名结果为多少字节?
签名原始数据量长度无限制,签名结果为64字节。
SM2加密算法支持多大的数据量,加密结果增加多少字节?
支持近128G字节数据长度,加密结果增加96个字节。
SM2相关算法有哪些?
SM2为国家密码管理局公布的公钥算法,其加密强度为256位。其它几个重要的商用密码算法包括:
SM1,对称加密算法,加密强度为128位,采用硬件实现;
SM3,密码杂凑算法,杂凑值长度为32字节,和SM2算法同期公布,参见《国家密码管理局公告(第 22 号)》;
SMS4,对称加密算法,随WAPI标准一起公布,可使用软件实现,加密强度为128位。
沃通CA做中国数字证书领域行业的领跑者 buy.wosign.com
SM2椭圆曲线公钥密码算法的更多相关文章
- [区块链] 密码学——椭圆曲线密码算法(ECC)
今天在学椭圆曲线密码(Elliptic Curve Cryptography,ECC)算法,自己手里缺少介绍该算法的专业书籍,故在网上查了很多博文与书籍,但是大多数博客写的真的是...你懂的...真不 ...
- 学习笔记——SM2算法原理及实现
RSA算法的危机在于其存在亚指数算法,对ECC算法而言一般没有亚指数攻击算法 SM2椭圆曲线公钥密码算法:我国自主知识产权的商用密码算法,是ECC(Elliptic Curve Cryptosyste ...
- 关于国密算法 SM1,SM2,SM3,SM4 的笔记
国密即国家密码局认定的国产密码算法.主要有SM1,SM2,SM3,SM4.密钥长度和分组长度均为128位. SM1 为对称加密.其加密强度与AES相当.该算法不公开,调用该算法时,需要通过加密芯片的接 ...
- SM系列国密算法(转)
原文地址:科普一下SM系列国密算法(从零开始学区块链 189) 众所周知,为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2).SM2.SM3.SM4.SM7. ...
- 2017-2018-2 20179207 《网络攻防技术》第十三周作业 python3实现SM234算法
国密算法SM234 的python3实现 国家标准 GM/T 0002-2012 <SM4分组密码算法> GM/T 0003.1-2012 <SM2椭圆曲线公钥密码算法 第1部分:总 ...
- OpenSSL 1.1.1 国密算法支持
OpenSSL 1.1.1 国密算法支持 https://www.openssl.org/ https://github.com/openssl/openssl OpenSSL 1.1.1 新特性: ...
- 实现 RSA 算法之改进和优化(第三章)(老物)
第三章 如何改进和优化RSA算法 这章呢,我想谈谈在实际应用出现的问题和理解. 由于近期要开始各种忙了,所以写完这章后我短时间内也不打算出什么资料了=- =(反正平时就没有出资料的习惯.) 在讲第一章 ...
- sm1、sm2、sm3、sm4简单介绍
转自:https://blog.csdn.net/andylau00j/article/details/54427395 国密即国家密码局认定的国产密码算法.主要有SM1,SM2,SM3,SM4.密钥 ...
- python实现AES/DES/RSA/MD5/SM2/SM4/3DES加密算法模板汇总
都是作者累积的,且看其珍惜,大家可以尽量可以保存一下,如果转载请写好出处https://www.cnblogs.com/pythonywy 一.md5加密 1.简介 这是一种使用非常广泛的加密方式,不 ...
随机推荐
- C#中巧用#if DEBUG 进行调试
#if DEBUG是个好东西. #if DEBUG UserID = "abc@test.com"; Password = "; #endif 当调试代码的时候加上适当的 ...
- Docker命令分类及使用场景分布(脑图)
常见的Docker命令分类主要有 不同使用场景下的命令分布 有疑问可到官方文档查询: https://docs.docker.com/engine/reference/commandline/dock ...
- 微信整合的时候 出现这个“redirect_uri 参数错误”
这是因为你在 微信的 管理中心 / 应用详情 中的授权回调域 只需要写域名就可以了 比如www.xxxxx.com 不需要具体某个页面
- fedora开机出现There is a problem with the configuration server. (/usr/libexec/gconf-sanity-check-2 exited with status 256)
Install problem!The configuration defaults for GNOME Power Manager have not been installed correctly ...
- webdriver之py,driver启动chrome时加载profile
import os from selenium import webdriver from selenium.webdriver.chrome.options import Options execu ...
- 【Spring】SpringMVC中浅析数据的传递方式
包括了基本数据类型的传递和 Date数据类型的传递.关于SpringMVC的配置可以参见基于注解实现SpringMVC+MySQL 假设有表单页面如下: <h1>登录</h1> ...
- 【Servlet】web.xml中url-pattern的用法
目录结构: contents structure [+] url-pattern的三种写法 servlet匹配原则 filter匹配原则 语法错误的后果 参考文章 一.url-pattern的三种写法 ...
- MongoDB学习笔记(4)--collection
MongoDB 创建集合 本章节我们为大家介绍如何使用 MongoDB 来创建集合. MongoDB 中使用 createCollection() 方法来创建集合. 语法格式: db.createCo ...
- 如何快速学会android的四大基础----Service篇
很多人都以为,只要学过一点java就可以马上写android应用了,这种想法的产生非常自然,因为现在网上有那么多的android开源实例,只要跟着来,也能够自己写一个播放器.但是,只有去写一个真正投入 ...
- mysql - tmp_table_size & max_heap_table_size
Command-Line Format --tmp_table_size=# System Variable Name tmp_table_size Variable Scope Global, Se ...