新手入门 | 掌握国密算法:新手指南: SM2 / SM3 / SM4密码算法详解

这篇具有很好参考价值的文章主要介绍了新手入门 | 掌握国密算法:新手指南: SM2 / SM3 / SM4密码算法详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

在密码学领域,有多种加密与签名算法,它们在信息安全领域发挥着举足轻重的作用。如今,随着互联网的快速发展,网络安全已经成为各类信息系统完整性、可用性、保密性的重要保障,越来越多的国产密码算法得到了广泛的应用与关注。在本文中,我们将重点介绍三个经典的国产密码算法:SM2、SM3和SM4,国密是国家密码管理局正式发布的国产密码算法。本文主要针对SM2、SM3、SM4进行详细且系统的介绍,帮助大家快速掌握国密算法。


一、国密算法简介

国密算法是中国国家密码管理局颁布的密码算法标准,包括SM2、SM3、SM4等算法。这些算法属于非对称加密算法,意味着加密与解密的密钥是不同的。与其他国际知名的加密算法相比,国密算法具有更好的安全性和性能。其中,SM2算法是国密椭圆曲线密码算法,类似于RSA、ECC; SM3算法是国密Hash算法,类似于SHA256; SM4算法是国密分组密码算法,类似于AES。

二、SM2算法

2.1 基本概念

SM2密码算法是国产密码算法标准,是一种基于椭圆曲线密码(ECC,Elliptic Curve Cryptography)的公钥密码,椭圆曲线密码是非对称密码的一种,具有更高的安全性与更低的计算复杂性。SM2密码算法实际上是在ECC的基础上制定的一套密码系统标准。且相比于RSA算法、DSA算法等具有更高的密钥强度,因此在信息安全领域具有广泛的应用。

2.1.1 密钥对

密钥对是SM2算法中使用的公钥和私钥的组合,其中公钥用于加密数据,而私钥用于解密数据。私钥是一组秘密的随机数,而公钥则是私钥与椭圆曲线上一点的乘积。

2.1.2 曲线

国密SM2算法采用的是椭圆曲线离散对数问题(ECDLP),椭圆曲线的选取是有限域能够保证算法的安全性。具体的曲线参数是国家密码管理局推荐的一组参数。

2.2 数字签名

SM2算法的数字签名分为两个过程:签名和验签。

2.2.1 签名过程

签名过程包括以下几个步骤:

生成随机数k;
计算椭圆曲线上点(x1, y1),其中(x1, y1) = k * G。G是椭圆曲线上的一个基点;
计算 r = (Mhash + x1) % n,其中 Mhash 为待签名消息的 SM3 Hash值,n 为椭圆曲线的阶;
计算签名值s = 1 / (k − rd) % n,其中 d为私钥.
最终,签名值为(r, s)。

2.2.2 验签过程

验签过程有以下几个步骤:

计算椭圆曲线上点Qa = d * G,其中d为私钥;
计算椭圆曲线上点R = s * G + r * Qa;
计算R.hash % n;
如果R == Mhash,则验证通过。

2.3 密钥交换协议

密钥交换协议是指两个用户在公共信道上,根据一定的协议生成一对临时的密钥对,并只有他们之间能知道这对密钥的具体值。SM2算法通过三个步骤来完成密钥交换协议。

2.3.1 三个步骤

密钥协商
确认交换密钥的完整性
双方验证对方的确认值

2.3.2 密钥协商

双方各自生成一个临时密钥对,并发出请求: 甲方发出密钥协商请求,乙方接收后生成一个临时密钥,并将消息发给甲方。甲方产生一个临时公钥。

2.3.3 确认交换密钥的完整性

甲乙双方采用对方的临时公钥和自己的私钥计算出一个共享密钥,并使用SM3算法对共享密钥进行哈希得到确认值。然后将确认值发送给对方,以确保交换的密钥完整性。

2.4 数字信封

数字信封是指在公共信道上传输数据时,使用对称加密算法对数据进行加密,并将加密后的数据和加密所使用的密钥分别用接收方的公钥和私钥进行加密,然后发送给接收方。接收方使用自己的私钥解密出加密密钥,并使用该密钥解密出原始数据。
SM2算法可以用于数字信封的加密和解密过程,其中加密过程如下:

随机生成一个对称密钥K;
使用SM4算法对明文数据进行加密得到密文C;
使用接收方的公钥对密钥K进行加密得到E(K);
将E(K)和C合并成数字信封并发送给接收方。

解密过程如下:

使用自己的私钥解密出E(K),得到对称密钥K;
使用SM4算法对密文C进行解密得到明文数据。

三、SM3算法

3.1 基本概念

SM3算法是中国国密标准中的Hash算法,用于将任意长度的消息压缩成一个固定长度的摘要。它的输出长度为256位,与SHA-256算法相同。

3.2 过程

SM3算法的过程主要包括Hash函数、填充、初始化摘要值、分组和迭代。

3.2.1 Hash函数

Hash函数是SM3算法中的核心部分,它由四个基本的压缩函数和一个异或函数组成。SM3算法中使用了类似于SHA-256的迭代压缩算法,将消息分组后依次进行压缩,并将最终的压缩结果组合成256位的摘要值。

3.2.2 填充

SM3算法使用了和SHA-256相似的填充方式,将消息填充至512位的整数倍。填充方式为将消息的末尾添加一个1,然后添加若干个0,使得消息长度满足对512取模为448,最后在末尾添加一个64位的长度值,表示消息的长度。

3.2.3 初始化摘要值

SM3算法中,摘要值的初始值由八个16进制数构成,这些数是由国家密码管理局推荐的。

3.2.4 分组

SM3算法将填充后的消息分成512位的分组,并依次进行Hash运算。

3.2.5 迭代

SM3算法中,每个分组都会进行一次迭代,迭代过程包括消息扩展、压缩和更新摘要值。

四、SM4算法

4.1 基本概念

SM4算法是中国国密标准中的分组密码算法,用于加密和解密数据。它的密钥长度为128位,分组长度为128位,类似于AES算法。

4.2 过程

SM4算法的过程主要包括加密过程和解密过程。

4.2.1 加密过程

SM4算法的加密过程包括以下几个步骤:

使用密钥扩展算法生成轮密钥;
将明文数据分成128位的分组;
对每个分组进行加密,包括轮函数、置换和轮密钥加;
输出密文数据。

4.2.2 解密过程

SM4算法的解密过程与加密过程相似,只是轮密钥的使用顺序与加密过程相反。具体步骤如下:

使用密钥扩展算法生成轮密钥;
将密文数据分成128位的分组;
对每个分组进行解密,包括轮函数、置换和轮密钥加;
输出明文数据。

4.2.3 子密钥生成

SM4算法中,轮密钥的生成是通过密钥扩展算法实现的。该算法将128位的密钥扩展成32个轮密钥,每个轮密钥为32位。具体步骤如下:

将输入的128位密钥分成4个32位的子密钥;
使用S盒和非线性变换对子密钥进行变换;
通过线性变换和置换生成每个轮密钥。

总结

国密算法是中国国家密码管理局颁布的密码算法标准,包括SM2、SM3、SM4等算法。这些算法具有更好的安全性和性能,逐渐被广泛应用。其中,SM2算法是中国国密椭圆曲线密码算法,类似于RSA、ECC; SM3算法是中国国密Hash算法,类似于SHA256; SM4算法是中国国密分组密码算法,类似于AES。了解这些算法的基本概念和过程,对于加强数据安全具有重要的作用。文章来源地址https://www.toymoban.com/news/detail-530165.html

到了这里,关于新手入门 | 掌握国密算法:新手指南: SM2 / SM3 / SM4密码算法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ajax超详解(新手入门指南)

    AJAX:全称是 Asynchronous JavaScript And XML ,即异步的JavaScript和XML。AJAX是用于前后端交互的工具,也就是说通过AJAX作为桥梁,客户端可以给服务端发送消息,也可以接收服务端的响应消息。 AJAX的两种实现方式: XHR :使用XMLHttpRequest对象来实现AJAX Fetch :使用Fetch API来实现AJAX X

    2023年04月25日
    浏览(50)
  • 【新手入门】矩池云使用指南

    矩池云按使用时间收费,是一款性价比较高的服务器平台,下面根据个人经验介绍第一次如何使用矩池云服务器。 链接: https://www.matpool.com 记得关注公众号领5个算力豆,用于新手体验 等待一分钟左右,页面出现jupyterlab链接 此时代码自动运行。注意第一次使用需要下载包 代

    2024年02月09日
    浏览(64)
  • 数据结构入门指南:链表(新手避坑指南)

    目录 前言 1.链表 1.1链表的概念  1.2链表的分类 1.2.1单向或双向 1.2.2.带头或者不带头 1.2.33. 循环或者非循环 1.3链表的实现  定义链表 总结         前边我们学习了顺序表,顺序表是数据结构中最简单的一种线性数据结构,今天我们来学习链表,难度相较于顺序表会大幅增

    2024年02月15日
    浏览(56)
  • 什么是 Web 3.0?(新手入门指南)

    目录 在这篇文章中,我们将解释什么是 Web 3.0,它的技术是如何发展的,哪些项目正在构建这个新的互联网,以及您如何参与其中。 Web 3.0 的定义 加密货币和区块链 Web 3.0 和元宇宙的互操作性 Web 3.0 技术的演进 Web 1.0 (1989-2005):只读 Web 2.0(2005 年至今):读写 Web 3.0(现在出

    2024年02月03日
    浏览(64)
  • 【胡学长 带你学 Global Mapper 】新手必看 入门指南

    Hi,我是胡学长!感谢您下载Global Mapper______一款经济实惠且易于使用的GIS应用程序。易于使用 直观的界面,高性价比且功能完善的GIS,可提供多源空间数据格式支持,以满足有经验的GIS专业工作者和初级用户的需求。当您开始探索Global Mapper 的丰富特性和功能时,您将很快了

    2024年01月16日
    浏览(56)
  • 文章一:SVN入门指南 - 版本控制新手的第一步

    概述:在本篇文章中,我们将介绍版本控制的基本概念和SVN的基础知识。从安装和配置SVN开始,逐步学习仓库创建、提交、更新等基本操作,让您快速入门SVN版本控制。 1. 引言 在软件开发过程中,版本控制是必不可少的工具。它允许开发团队对代码进行有效管理,记录代码

    2024年02月13日
    浏览(58)
  • git入门指南:新手快速上手git(Linux环境如何使用git)

    目录  前言 1. 什么是git? 2. git版本控制器 3. git在Linux中的使用 安装git 4. git三板斧 第一招:add 第二招:commit 第三招:push 5. 执行状态 6. 删除 总结           Linux的基本开发工具介绍完毕,接下来介绍一下Linux环境下如何使用git,以及git到底是什么?它和gitee和github之间有

    2024年02月03日
    浏览(62)
  • 高效学习之anki新手入门指南(ios端,包括ipad、ihpone设备)————创建、使用、备份、相关资料

    最近在使用Anki刷题(开源社区软件,不用有停更的,后顾之忧)备考,自己主要在移动端(ipad、iphone)使用,但是网上很多资料都是电脑端或安卓端的,不能直接拿来使用,所以随笔记录和总结了一些自己使用Anki的一些最基本的使用方法(基本功能会用就可以了,不需要太

    2024年02月08日
    浏览(50)
  • 高效学习工具之AnkiMobile新手入门指南(ios端,包括ipad、ihpone设备)————创建、使用、备份、设置参数、相关资料

    最近在使用Anki刷题(开源社区软件,不用有停更的,后顾之忧)备考,自己主要在移动端(ipad、iphone)使用,但是网上很多资料都是电脑端或安卓端的,不能直接拿来使用,所以随笔记录和总结了一些自己使用Anki的一些最基本的使用方法(基本功能会用就可以了,不需要太

    2024年02月06日
    浏览(64)
  • 阿里云X森马 AIGC T恤设计大赛;SD新手入门完全指南;揭秘LLM训练中的数学;LLM高质量阅读清单 | ShowMeAI日报

    👀 日报周刊合集 | 🎡 生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 比赛官网:https://developer.aliyun.com/adc/series/activity/aigc_design 阿里云携手服装品牌森马,推出了本次 AIGC T 恤设计大赛。开发者、设计师、AI绘画爱好者,都可以使用阿里云函数计算快速部署 Stable D

    2024年02月11日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包