zoukankan      html  css  js  c++  java
  • 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  

     
     
  • 相关阅读:
    在Dockerfile CMD一次执行多个命令
    文本中字符串替换
    centos登录密码正确但一直报login incorrect错误(错误赋予权限)
    kafka使用时的问题
    elasticsearch使用问题
    Redis常见问题
    tomcat常见问题
    JavaScript的BOM对象
    JavaScript的DOM操作
    JavaScript常用对象介绍
  • 原文地址:https://www.cnblogs.com/xiaouisme/p/7227118.html
Copyright © 2011-2022 走看看