首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >SM 算法 >SM9 算法是如何工作的?

SM9 算法是如何工作的?

词条归属:SM 算法

1. 核心设计思想

SM9 算法基于标识密码(IBC)体系,核心特点是"标识即公钥":用户的唯一标识(如 alice@company.com、手机号码、设备 ID)经过哈希运算后直接作为公钥使用,私钥由密钥生成中心(KGC)根据主密钥和用户标识统一生成。该设计彻底摆脱了对 CA 和数字证书的依赖,大幅简化了密钥管理流程。

2. 系统初始化流程

KGC 生成系统主密钥对:随机生成主私钥 s(保密存储),计算主公钥 P_pub = s × P2(公开分发)。KGC 同时公开系统参数,包括椭圆曲线参数、基点、哈希函数、双线性对识别符等。主私钥是系统的信任根,必须严格保护。

3. 私钥生成流程

用户向 KGC 提交身份标识(如邮箱地址),KGC 使用主私钥 s 和标识派生出用户私钥 d_ID = s × H(ID),通过安全渠道(如离线介质、加密通道)分发给用户。此后,任意通信方只需知道对方标识即可进行加密或验签。

4. 加密与签名流程

  • 加密:发送方将接收方标识哈希为椭圆曲线点 Q_B,生成随机数 r,计算密钥 K = e(Q_B, P_pub)^r,使用 K 派生对称密钥加密消息,输出密文 C = (C1, C2)。接收方使用私钥 d_B 计算 K = e(C1, d_B) 恢复对称密钥并解密。
  • 签名:签名者使用私钥对消息哈希值进行签名,验证者使用签名者标识(公钥)验证签名,无需证书链校验。

5. 标准构成

SM9 算法标准(GM/T 0044 系列 / GB/T 38635-2020)包括五个部分:总则、数字签名算法、密钥交换协议、密钥封装机制和公钥加密算法、参数定义。

相关文章
面部识别算法是如何工作的?
过去十年,深度学习领域出现了许多先进的新算法和突破性的研究,并且引入了新的计算机视觉算法。
小白学视觉
2022-12-27
1.4K0
Goroutine是如何工作的
在golangweekly的第36期Go Newsletter中我发现一篇短文"How Goroutines Work" ,其作者在参考了诸多资料后,简短概要地总结了一下 Goroutine的工作原理,感觉十分适合刚入门的Gophers(深入理解Goroutine调度的话,可以参考Daniel Morsing的" The Go scheduler" )。这里粗译如下。 一、Go语言简介 如果你是Go语言新手,或如果你对"并发(Concurrency)不是并行(parallelism)"这句话毫无赶脚,那么请
李海彬
2018-03-19
4K0
JavaScript 是如何工作的🔥 🤖 [视觉解释]
JavaScript 是世界上最受欢迎和最讨厌的语言之一。它被爱,因为它是有效的。您只需学习 JavaScript 即可制作全栈应用程序。它也被讨厌,因为它以出乎意料和令人不安的方式行事,如果您不投入理解该语言,可能会让您讨厌它💔。 这篇博客将解释 JavaScript 如何在浏览器中执行代码,我们将通过动画 gif 来学习它😆。看完这篇博文,你离成为Rockstar开发者又近了一步🎸😎 执行上下文 “ JavaScript 中的一切都发生在一个执行上下文中。” 我希望每个人都记住这句话,因为它是必不可
玖柒的小窝
2021-09-12
4.6K0
HTTPS是如何工作的
大家在浏览网页的时候一定有这样的体验,有一些网站在网址那里会显示一个绿色的挂锁,并且网址中“https”相关的字样也是绿色的,聪明的朋友肯定会问,这些颜色和符号代表什么意思呢?想想大家在上网的时候,经常要输入账号和密码,有时候网购还要输入信用卡信息,如果这些信息被偷了,后果是很严重的。是的,这个绿色的锁就是用来保护大家的信息不被黑客窃取。现在很多网站默认使用HTTPS来保护用户的信息,截止2018年4月,Alexa前100万的网站中,32.2%使用HTTPS作为默认设置,互联网最受欢迎的137971个网站中,57.1%使用了HTTPS;Firefox遥测数据显示,70%的网站使用了HTTPS。
大蟒传奇
2018-07-31
4.5K0
Goroutine是如何工作的
一、Go语言简介 如果你是Go语言新手,或如果你对"并发(Concurrency)不是并行(parallelism)"这句话毫无赶脚,那么请看一下Rob Pike大神关于这个主题的演讲吧,演讲共30分 钟,我敢保证你在这个演讲上花费30分钟是绝对值得的。 总结一下两者(Concurrency和Parallelism)的不同:"当人们听到并发(Concurrency)这个词时,总是会想起并行 (Parallelism),它们之间有相关性,但却是两个明显不同的概念。在编程领域,并发(Concurrency)是独
李海彬
2018-03-21
4K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券